下面的源代碼與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