C:\>copy a.cpp con
class Test
{};void foo( Test& a ){}int main(int argc,char* argv[]){
Test a;
foo(a);
foo(Test());return0;}1개 파일이 복사되었습니다.
C:\>cl.exe a.cpp
Microsoft (R)32비트 C/C++ 최적화 컴파일러 버전 16.00.40219.01(80x86)
Copyright (c) Microsoft Corporation. 모든 권리 보유.
a.cpp
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:a.exe
a.obj
C:\>cl.exe/Wall a.cpp
Microsoft (R)32비트 C/C++ 최적화 컴파일러 버전 16.00.40219.01(80x86)
Copyright (c) Microsoft Corporation. 모든 권리 보유.
a.cpp
a.cpp(5): warning C4100:'a': 참조되지 않은 정식 매개 변수입니다.
a.cpp(13): warning C4239: 비표준 확장이 사용됨 :'인수':'Test'에서 'Test &'(
으)로의 변환입니다.
비const 참조는 lvalue에만 바인딩할 수 있습니다.
a.cpp(9): warning C4100:'argv': 참조되지 않은 정식 매개 변수입니다.
a.cpp(9): warning C4100:'argc': 참조되지 않은 정식 매개 변수입니다.
Microsoft(R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:a.exe
a.obj
C:\>
추가- const라면 const 레퍼런스 타입이
추가-
const라면 const 레퍼런스 타입이 참조하게 해야하는데 non-const타입에 대입했더니 잘만되는군요..
관련 세부사항은 잘 모릅니다만...
제 MBA 의 Clang 은 compile 오류를 냅니다.
질문 올리신 source 를 따라해보니 한가지 확실히 알겠군요.
표준을 정확히 알기 위해 시험할 때에는 Visual C++ 를 써서는 안된다. ^_^
Apache 의 호환성 시험결과를 보시기 바랍니다.
http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
여기서 Visual C++ 의 version 11 이 Visual C++ 2012 입니다.
아직 2013 은 없군요.
그렇군요. VC만 이런건가요.. 좋은 정보
그렇군요.
VC만 이런건가요..
좋은 정보 감사드립니다.
꼼꼼히 읽어봐야겠습니다.
gcc를 쓰시기를 추천드립니다만, 꼭vs를
gcc를 쓰시기를 추천드립니다만, 꼭vs를 쓰셔야겠다면 할 수 없지요..
어떤 컴파일러든, warning level은 최대로 해서 컴파일하세요.
아, compiler 호환성 문제였군요.
기존의 VC 용 source 를 위한 호환성 문제로 compile 되도록 남겨둔거군요.
좋은 정보 감사합니다.
Test 클래스 생김새 아는 사람 아무도 없습니다.
저번에도 그러셨던 거 같은데
최소한 남들 컴퓨터에서 컴파일이 될 수 있도록 코드를 올리세요.
www.gilgil.net
죄송합니다 또 깜빡하고 올리지
죄송합니다 또 깜빡하고 올리지 않았군요.
조언감사합니다.
댓글 달기