반응형
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 |