g ++ - 4.7 및 -std = C++ 0x를 사용하여 C++ 11에서 응용 프로그램을 개발 중입니다.
내 앱은 g ++ - 4.7로 컴파일되었지만 -std = C++ 0x 지시어가없는 공유 라이브러리에 연결됩니다.C++ 11과 C++ 03 사이의 라이브러리 호환성
외부 라이브러리 클래스 및 메서드를 사용할 때 이상한 동작이 발생한다는 것은 의미가 없습니다. (물론 내 응용 프로그램을 컴파일하지 않고 -std = C++ 0x는 정상적으로 작동합니다.)
예상되는 동작입니까 아니면 컴파일러 버그입니까?
모든 대안 (C 키워드
extern
과 같은)?
왜'-std = C++ 0x'로 라이브러리를 다시 컴파일 할 수 없습니까? – leftaroundabout
하나의 TU를 라이브러리 헤더의 한보기와 다른보기의 다른 TU로 컴파일하면 모든 번역 단위에 동일한 코드가 표시된다는 것은 분명히 위반됩니다. –
다른 플래그로 컴파일하는 것은 정신 이상에 대한 가장 짧은 길 중 하나입니다. 경고 및 최적화 수준은 다소 차이가 있지만, 소스 코드의 해석이나 생성 된 바이너리의 레이아웃에 영향을 줄 때 ... 콧노래. –