Mã nguồn sau biên dịch một cách chính xác với Visual Studio 2010:Mã biên dịch trong Visual Studio 2010 nhưng không nên biên dịch ở tất cả
namespace NS
{
class X
{
};
X Y(X str);
}
void myFun()
{
NS::X x;
Y(x);
}
(này đang giảm mà tất cả lớp học và chức năng riêng tên của tôi đã được thay thế bởi X, Y, ...)
Tôi hy vọng rằng dòng Y(x)
sẽ không biên dịch được, vì nó phải là NS::Y(x)
.
mã nguồn này được biên soạn với lệnh sau đây
cl /c file.cpp
Không có tệp nào khác bao gồm ở đây, không có tùy chọn dòng lệnh khác.
Tại sao tệp này biên dịch? Lỗi trong VS2010? Hoặc một cái gì đó mà tôi (và 3 đồng nghiệp khác của tôi) bỏ qua?
đã thử điều này với g ++ và nhận 'tham chiếu không xác định đối với NS :: Y (NS :: X) '' - vì vậy có thể nó có thể là lỗi trong VS .. – WeaselFox
http://ideone.com/WzC6V –
@WeaselFox : hoàn toàn không liên quan. Lỗi của bạn là lỗi * linker * vì 'NS :: Y' không được xác định. Nó là điển hình, và có lẽ sẽ được định nghĩa trong một tập tin khác trên một thiết lập hoàn chỉnh. –