Вы можете определить, для какой платформы ваш код компилируется , для чего используются (специфичные для компилятора) макросы препроцессора, такие как WIN32 и т.п.Нет простого способа определить, на какой платформе ваша программа работает с (кроме того, она, скорее всего, работает на платформе, для которой она была скомпилирована) - для этого вам нужно будет выполнить вызовы, специфичные для платформы / ОС..
Вы можете сделать что-то вроде этого:
#ifdef WIN32 // compiler specific, WIN32 is defined in Visual Studio
// Windows specific code
// include Windows specific headers
int controllingVar = 0; // 0 - Windows
#else
// For everything else
// Here: assume Unix/Linux
// include Linux specific headers
int controllingVar = 1; // 1 - non-Windows
#endif
После этого вы можете сослаться на controllingVar
в вашем коде.controllingVar
будет иметь значение 0, если программа была скомпилирована для Windows, в противном случае - 1 (и вы можете исходить из предположения о Linux).
Часть #ifdef
включает условную компиляцию - код внутриБлок, специфичный для Windows, компилируется только тогда, когда он компилируется для Windows, а другой - в любом другом случае.
Обратите внимание, что это, по сути, требует дублирования усилий по кодированию, обслуживанию и тестированию, поэтому старайтесь размещать только самый важный код вусловные блоки и все, что не зависит от платформы за его пределами.