난 항상 이런 식으로 수행하여 주요 코드에서 플랫폼 특성을 유지하려고
platform.h :
#if BUILD_PLATFORM == WINDOWS_BUILD
#include "windows_platform.h"
#elif BUILD_PLATFORM == LINUX_BUILD
#include "linux_platform.h"
#else
#error UNSUPPORTED PLATFORM
#endif
someclass.c : 이제
void SomeClass::SomeFunction()
{
system_related_type t;
// Other code
platform_SystemCall(&t);
// Other code
}
에서 windows_platform.h
및 linux_platform.h
네이티브 형식에 system_related_type
을 typedef로 지정하고 #define platform_SystemCall
을 기본 호출로 사용하거나 작은 래퍼 함수 한 플랫폼에서 다른 플랫폼으로 설정된 인수가 너무 다른 경우
특정 작업에 대한 시스템 API가 플랫폼간에 크게 다른 경우 차이를 나누는 고유 한 버전 API를 만들어야 할 수 있습니다. 그러나 대부분의 경우 Windows와 Linux의 다양한 API간에 상당히 직접적인 매핑이 있습니다.
특정 컴파일러 #define을 사용하여 플랫폼을 선택하는 대신 플랫폼에 따라 고유해야하기 때문에 # 프로젝트 파일이나 makefile에서 BUILD_PLATFORM을 정의합니다.
- _WIN64에 대한 Win64를 위해 컴파일 할 때 당신이 _WIN32이 정의되어 있는지 찾을 수 있도록 테스트는 테스트 전에 (!) against _WIN32 –