我有这么少的代码:
//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
没关系!
但是当我在“ main ”函数中删除对变量“ a ”的引用时,程序编译得很好:
//example2
namespace
{
int a;
}
int a;
main()
{
return 0;
}
1)为什么 g++ 编译器允许定义变量“ a ”,而在这种情况下它不允许对它的引用?
2)它只是g ++编译器的功能,没有其他编译器能够编译这样的代码(example2)?
3) g++ 编译器是否有相应的标志来解释这样的代码(example2)是错误的?
非常感谢大家!