2015년 12월 21일 월요일

Linux/Windows Compatible code만들기 팁

* compiler가 Linux, Window등 OS를 detect하는 방법 (header / cpp 중간부분에서 먹힘)
    #ifdef _WIN64
    //define something for Windows (64-bit)
    #elif _WIN32
    //define something for Windows (32-bit)
    #elif __APPLE__
    #elif __linux
    // linux
    #elif __unix // all unices not caught above
    // Unix
    #elif __posix
    // POSIX
    #endif
    * 참조보다 자세한 링크
* 하지만 stdafx.h와 같이 cpp파일 맨처음에 나오는 것은 위에 것으로도 detect못함.
    이럴경우는 stdafx.h를 가짜로 만들어서 linux에서 사용하는 방법밖에는 없음.
    * 참조

* 결국 추천하는 방법
    header의 경우, 위의 방법(#ifdef _WIN32 ~~ #endif)으로 해결
    cpp의 경우, 특히 #include "stdafx.h"의 경우는 dummy를 만들어서 링크하도록 하고, windows의 진짜 stdafx.h의 경우 #ifdef _WIN32 ~본문~ #endif로 감싸서 windows에서만 실행되도록 만듦. or src코드를 stdafx.h와 별도로 만들어도 됨.