私は最近、「extern」キーワードの使用が強く推奨されていることに気付き始めました。したがって、ヘッダー ファイルを使用する現在の (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_ */
関数.c:
#include "main.h"
#include "function.h"
void testfunction(){
globalvariable++;
return;
}
関数.h:
#ifndef FUNCTION_H_
#define FUNCTION_H_
void testfunction(void);
#endif /* FUNCTION_H_ */
したがって、 globalvariableへのアクセスが必要な新しいソース ファイルはすべて、main.h をインクルードするだけで済みます。
このメソッドの明らかな欠点の 1 つは配列です。{element0, element1, ...} フォーマットを使用して、配列が宣言された後に値を配列に割り当てることはできません。
ところで、globalvariableに初期値ゼロを与える場合、その時点で定義しているのでしょうか? または、メモリが以前に割り当てられていますか?
また、私が使用している方法の正式な用語はありますか?