Недавно я начал понимать, что использование ключевого слова extern очень приветствуется. Таким образом, я начал задаваться вопросом, есть ли что-нибудь не так с текущим (без внешнего) способом использования файлов заголовков:
main.c:
#include "main.h"
#include "function.h"
int main(void){
globalvariable = 0;
testfunction();
return 0;
}
main.h:
#ifndef MAIN_H_
#define MAIN_H_
int globalvariable;
#endif /* MAIN_H_ */
function.c:
#include "main.h"
#include "function.h"
void testfunction(){
globalvariable++;
return;
}
function.h:
#ifndef FUNCTION_H_
#define FUNCTION_H_
void testfunction(void);
#endif /* FUNCTION_H_ */
Таким образом, каждый новый исходный файл, которому требуется доступ к globalvariable, просто должен включать main.h.
Одним из очевидных недостатков этого метода являются массивы: вы не можете использовать форматирование {element0, element1, ...} для присвоения значений массиву после его объявления.
Кстати, когда я даю globalvariable начальное значение, равное нулю, я определяю его в этот момент? Или память уже выделена раньше?
Кроме того, есть ли официальный термин для метода, который я использую?
extern
не приветствуется; вы должны использовать его только в случае крайней необходимости (чего, надеюсь, никогда не будет). - person Oliver Charlesworth   schedule 10.04.2012