2014-03-02 2 views
1

SDL/OpenGL 프로그램 용 메이크 파일을 작성 중입니다. SDL2.0 예제에서 Makefile을 살펴보면 DHAVE_OPENGL, D_REENTRANT와 같은 컴파일러 플래그를 볼 수 있습니다. gcc의 맨 페이지에서는 아무 것도이 플래그 중 하나에 대한 정보를 찾을 수 없습니다. 인터넷상의/나의 시스템 어디에서 gcc가 지원하는 모든 플래그에 관한 문서를 찾을 수 있습니까?컴파일러 gcc 컴파일러 플래그에 대한 설명?

답변

2

-D 옵션은 특정 컴파일러 플래그를 정의하는 것이 아니라 pass macro definitions to the preprocessor을 정의하는 데 사용됩니다.

실제로 -DHAVE_OPENGL은 소스 코드에 #define HAVE_OPENGL 1을 갖는 것과 같습니다. 따라서 컴파일러 자체와 관련이 없으며 컴파일하는 코드와 관련이 있습니다.

Here 어떤 경우에도 GCC 옵션에 대한 포괄적 인 문서를 찾을 수 있습니다.

1

이들은 컴파일러 플래그 이 아닙니다. -D은 컴파일러 플래그이지만 다음은 사전 프로세서 정의입니다. 컴파일러 문서에서 의미하는 바에 대한 정보는 실제로 작성하는 동작 (예 : 컴파일 중에 실제로 포함되는 부분)에 영향을 미치므로 어떤 정보도 찾을 수 없습니다. 코드

불행하게도, 사전 처리기 토큰을 정의하는 것이 컴파일 할 소스 코드를 조사하거나 사용중인 라이브러리에서 문서화하는 경우에만 알 수 있습니다.

그러나 일반적으로 HAVE_OPENGL을 사용하면 SDL에서 GL 관련 코드를 컴파일 할 수 있습니다.

스레드 안전성을 위해 재진입이 사용되며, _REENTRANT은 표준 사전 프로세서 정의는 아니지만 (일부 C stdlib 구현에서 일반적으로 사용 되긴하지만) 소프트웨어가 재실행을 선택하도록 가정하는 것이 안전합니다. 가능할 때마다 응모자 버전의 기능을 제공합니다.