반응형

C, C++ : 운영체제를 구분할 수 있는 매크로변수

알게된 배경

 규모가 큰 프로젝트의 경우 운영체제별로 빌드되는 파일이 달라야 하기 때문에 이를 구분하기 위해서 매크로 변수를 정의하여 구분을 하고 있다.


원리

 컴파일러가 컴파일을 하기 전에 매크로를 먼저 실행을 하는데, 이 때 각 컴파일러는 환경에 대한 매크로변수가 정의 되어 있다. 이 매크로변수의 존재 유무를 가지고 운영체제를 판단하는 것이다. 단, 주의 할 점은 컴파일러자신이 있는 운영체제가 반영된 것이 때문에 윈도우에서 빌드한것은 윈도우에서 실행되고 리눅스에서 빌드된것은 리눅스에서 실행된다. 대신 소스코드만 같은 파일을 사용할 수 있다는 점이다.(그리고 이를 핑계로 고용주에게 운영체제 사달라고 하겠지..)

 실제로 규모가 큰 프로젝트는 C보다는 C++에서 많이 진행되므로 실제 사용하는 경우는 C++에서 사용될 것이다.


매크로 변수들

// windows
// 32 bit, 64 bit
#ifdef _WIN32
#endif
// only 64 bit
#ifdef _WIN64
#endif

// unix
#ifdef unix
#endif
#ifdef __unix
#endif
#ifdef __unix__
#endif

// Mac OS X
#ifdef __APPLE__
#endif
#ifdef __MACH__
#endif

// Linux
#ifdef __linux__
#endif
#ifdef linux
#endif
#ifdef __linux
#endif

// FreeBSD
#ifdef __FreeBSD__
#endif


참고자료

스택오버플로워 답변들 중


반응형

'C++' 카테고리의 다른 글

gcc C++ : 리눅스 라이브러리 만들기 입문  (0) 2017.06.12
STL C++ : vector 중복원소 제거  (0) 2017.04.28
STL C++ : string을 이용한 뒷단어 검사  (0) 2017.04.24
C++ : 네임스페이스  (0) 2017.04.21
표준 레퍼런스  (0) 2017.02.18

+ Recent posts