2011-01-01 2 views
4

Visual Studio (또는 호환을 시도하는 컴파일러)를 사용하여 Windows에서 C/C++ 프로그램을 컴파일 할 때 사용할 수있는 미리 정의 된 매크로 _WIN32 (출처 : http://msdn.microsoft.com/en-us/library/b0084kay.aspx)가 있습니다 플랫폼 별 #ifdef-s.Linux/POSIX의 플랫폼 별 매크로 관련 문서

내가 찾고있는 것은 Linux에서의 analogon이다. 내가 리눅스/POSIX 호환 가능하다고 주장하는 OS 용으로 컴파일하고 있다고 알려주는 매크로.

그래서 내가 GCC 문서로보고이 발견

http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html 내 프로그램에 적용을, 다음 매크로 (GCC 4.4.5 - 우분투 10.10) (내가 중요한 매크로를 떨어 뜨리지 않았다 희망 약속 보았다) :

#define __USE_BSD 1 
#define __unix__ 1 
#define __linux 1 
#define __unix 1 
#define __linux__ 1 
#define _POSIX_SOURCE 1 
#define __STDC_HOSTED__ 1 
#define __STDC_IEC_559__ 1 
#define __gnu_linux__ 1 
#define __USE_SVID 1 
#define __USE_XOPEN2K 1 
#define __USE_POSIX199506 1 
#define _G_USING_THUNKS 1 
#define __USE_XOPEN2K8 1 
#define _BSD_SOURCE 1 
#define unix 1 
#define linux 1 
#define __USE_POSIX 1 
#define __USE_POSIX199309 1 
#define __SSP__ 1 
#define _SVID_SOURCE 1 
#define _G_HAVE_SYS_CDEFS 1 
#define __USE_POSIX_IMPLICITLY 1 

위에서 언급 한 Windows 관련 매크로는 어디에서 찾을 수 있습니까? 또한

+1

나열된 매크로 중 일부는 기능 테스트 매크로입니다 (http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html 참조). 작동하지 않습니다. 네가 원하는대로. – ninjalj

답변

3

는 한번의 pkgsrc로 사용되는 식별 매크로를 수집 * BSD 등 내가 매크로에 관심이 일반적으로 다른 POSIX 호환 운영 체제에 대해 정의 된 것, 크로스 플랫폼 패키지 시스템 : http://www.netbsd.org/docs/pkgsrc/fixes.html#fixes.build.cpp

그 당시에는 신뢰할만한 출처를 찾지 못했습니다.

6

glibc manual에는 _POSIX_SOURCE을 비롯한 몇 가지 매크로가 나열되어 있습니다. 그러나 프로그래머는 이러한 매크로를 빌드 스크립트에서 정의하고 C 라이브러리 헤더는 특정 기능을 사용하거나 사용하지 않도록 설정합니다.

2

요즘 게임에는 Windows와 POSIX가 있습니다. 따라서 #ifndef _WIN32으로 원하는 것을 얻을 수 있습니다. 생존하는 유닉스 변종 간의 차이점은 autoconf 스타일의 기능 테스트, 예를 들면. #ifdef HAVE_SYS_WHATEVER_H; 그러나 당신이 필요로하는 것을 알기 전까지 그것들 중 아무 것에도 귀찮게하지 마십시오. autoconf 매뉴얼의 많은 스톡 테스트는 요즘 불필요합니다.

은 (IBM은 비 Unixy 메인 프레임을 호출 어떤 VMS 및 여전히 마을에서 더 많은 게임으로 간주 요즘 OS,하지만 난 누군가가 요청 될 때까지 그 중 하나에 이식하려고 귀찮게하지 않을 것입니다.)

관련 문제