При компиляции программы на C / C ++ под Windows с использованием Visual Studio (или компилятора, который пытается быть совместимым) существует предопределенный макрос _WIN32 (Источник: http://msdn.microsoft.com/en-us/library/b0084kay.aspx), который можно использовать для конкретной платформы #ifdef-s.
Мне нужен аналог под Linux: макрос, который сообщает мне, что я компилирую для Linux / ОС, которая претендует на (более или менее) POSIX-совместимость.
Поэтому я посмотрел документацию по gcc и обнаружил следующее: http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html
Применительно к моей программе следующие макросы (gcc 4.4.5 - Ubuntu 10.10) выглядели многообещающе (надеюсь, что я не уронилважный макрос):
#define __USE_BSD 1
#define __unix__ 1
#define __linux 1
#define __unix 1
#define __linux__ 1
#define _POSIX_SOURCE 1
#define __STDC_HOSTED__ 1
#define __STDC_IEC_559__ 1
#define __gnu_linux__ 1
#define __USE_SVID 1
#define __USE_XOPEN2K 1
#define __USE_POSIX199506 1
#define _G_USING_THUNKS 1
#define __USE_XOPEN2K8 1
#define _BSD_SOURCE 1
#define unix 1
#define linux 1
#define __USE_POSIX 1
#define __USE_POSIX199309 1
#define __SSP__ 1
#define _SVID_SOURCE 1
#define _G_HAVE_SYS_CDEFS 1
#define __USE_POSIX_IMPLICITLY 1
Где я могу найти подробную документацию по ним - относительно упомянутых выше специфичных для Windows макросов?
Кроме того, меня интересуют макросы, которые обычно определяютсядля других POSIX-совместимых операционных систем, таких как * BSD и т. д.