元ネタ
確認環境はVS2008
以下の2つのプログラム
test1.c
#include int hoge; int main(void) { ??? printf("%d\n", hoge); ??? return 0; } |
?
test2.c
?
を
cl test1.c test2.c
して
test1
とすると出力結果は
1
cl test1.c test2.c /Faしてアセンブラのhogeの部分の出力を見ると
test1.asm
_DATA??? SEGMENT COMM??? _hoge:DWORD _DATA??? ENDS |
test2.asm
PUBLIC??? _hoge CONST??? SEGMENT _hoge??? DD??? 01H CONST??? ENDS END |
因みにtest1.cの宣言をconst int hoge=1;にすると、test1.asmもtest2.asmと同様の出力になるため
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
が出る。
これでいいのだろうか???