Вы не сможете обнаружить операционную систему во время компиляции. Однако вы сможете определить компилятор - практически все компиляторы определяют макросы, указывающие их наличие, например __GNUC__
или что-то подобное для GCC, а MSVC имеет __MSC_VER__
или что-то подобное Вам придется проверить их документацию на предмет реальных имен макросов, я забыл.
Редактировать: для уточнения, вы можете проверить, какие заголовки системы включены. Например, заголовки Windows определяют количество макросов, таких как WINNT_VER
, которые задают минимальную версию Windows, на которую нужно ориентироваться. Но вы не можете обнаружить исполняющуюся ОС компилятора.