gcc -std=c++11
을 사용하여 Cygwin에서 프로그램을 컴파일 할 수 없습니다. 헤더는 boost/asio.hpp처럼 누락 된 정의를 사용하려고 시도하지 않는 한 OK를 컴파일합니다. 이제 Cygwin의 #ifdef
매크로는 C++ 11 환경에서 일부 함수 정의를 우회하기 때문에 프로그램이 그렇지 않을 수도 있습니다. 동일한 소스 파일이 Fedora Linux에서 비슷하게 컴파일되는 경우에는 발생하지 않습니다.gcc -std = C++ 11을 사용할 때 Cygwin에서 일부 시스템 기능이 정의되지 않은 이유는 무엇입니까?
이 예제 프로그램은 GCC를 사용하여 컴파일에 실패 -std = C++ 11 옵션 :
#include <boost/asio.hpp>
int main() { return 0; }
내가 먼저 위의 프로그램이 컴파일되지 않았 음을 발견하여 발생이 후 더 유사한 발견 업데이트 된 표준을 사용하여 기존 코드를 다시 컴파일 할 때 발생하는 문제
내가 발견 한 포함 된 섹션이 회신에 나열됩니다. , 소스 코드에서
다른 포함하기 전에
#define _GNU_SOURCE
이 포함
대신 왜'-std = gnu ++ 11'을 사용하지 않습니까? –
감사합니다 .MarkGlisse. 나는 문서에서 찾은'C++ 11' 옵션을 사용했다. 새로운 표준을 지정하기 전까지 새로운 표준을 지정하는 또 다른 방법이 있다는 것을 깨닫지 못했습니다. (귀하의 방법이 더 좋으며, 업그레이드를 업그레이드하거나 다시 설치할 때 문제가 재발하지 않습니다.) – FNE