我有這樣漂亮的小碼:爲什麼編譯器接受含糊變量定義?
//example1
namespace
{
int a;
}
int a;
main()
{
a++;
return 0;
}
當然,G ++ 4.6.1編譯器不能編譯並輸出一個錯誤:
./temp.cpp: In function ‘int main()’:
./temp.cpp:10:5: error: reference to ‘a’ is ambiguous
./temp.cpp:6:5: error: candidates are: int a
./temp.cpp:2:9: error: int {anonymous}::a
沒關係!
但是,當我刪除提及變量「一個」內「主」的功能,該程序正在編譯以及:
//example2
namespace
{
int a;
}
int a;
main()
{
return 0;
}
1)爲什麼克++編譯器允許的定義變量「a」,在這種情況下,它不允許引用它?
2)它只是g ++編譯器的功能,沒有其他編譯器能夠編譯這樣的代碼(example2)?
3)g ++編譯器是否有相應的標誌來解釋這樣的代碼(example2)爲錯誤?
非常感謝大家!
真的! :)我想,在這樣的變量的「a」用法中,它應該放在源代碼的末尾...... – 2013-04-30 13:48:21
它應該放置在最有意義的位置...... – 2013-04-30 13:54:25