下面的源代码与Visual Studio 2010编译正确编译:代码编译在Visual Studio 2010,但不应该在所有
namespace NS
{
class X
{
};
X Y(X str);
}
void myFun()
{
NS::X x;
Y(x);
}
(所有我自己的类和函数名已被替换,这是减少代码由X,Y,...)
我预计行Y(x)
将无法编译,因为它应该是NS::Y(x)
。
此源代码是用下面的命令编译
cl /c file.cpp
有没有包括其他文件在这里,没有其他的命令行选项。
为什么这个文件汇编? 错误在VS2010?还是我(和我的另外三个同事)忽略的东西?
用g ++试过这个,并得到了'NS :: Y(NS :: X)'的未定义引用' - 所以也许它可能是VS中的一个错误.. – WeaselFox 2012-03-22 09:53:22
http://ideone.com/WzC6V – 2012-03-22 09:59:14
@WeaselFox :完全无关。您的错误是*链接器错误*,因为没有定义NS :: Y。这是典型的,可能会在另一个完整的设置文件中定义。 – 2012-03-22 10:52:11