externとグローバル変数の疑問
前もって言っておくけど解答を示しているわけじゃないです。
C書いてて不思議に思ったので、字面に起こしておこうと思った。externとグローバル変数の使いかたに曖昧さがあると自分で感じた。感じたのは以下のようなコード。
/* test.h */ #ifndef _TEST_H_ #define _TEST_H_ #ifdef __cplusplus extern "C" { #endif #include <stdio.h> int g; void set(void); #ifdef __cplusplus } #endif #endif
#include "test.h" int extern_g; int main() { g = 0; extern_g = 100; printf("global variable g is %d\n", g); set(); printf("global variable g is %d\n", g); return 0; }
#include "test.h" extern int extern_g; void set() { g = 100; printf("extern variable extern_g is %d\n", extern_g); }
gccもエラーにならんしどうなんだろう
externって便利と言えば便利だけどなくても困らなくない?って思った。結局は、動けばいいっていう話だけど。
正しいヘッダファイルの書き方を学ばないとなって思った。