Версия компилятора, имя и определение ОС в C ++ - PullRequest
4 голосов
/ 18 января 2011

Мне нужно определить имя ОС, имя компилятора и версию компилятора с C ++, так как мне нужно изменить настройки для каждого случая.

Как я могу это сделать?

Ответы [ 4 ]

6 голосов
/ 18 января 2011

Для большинства компиляторов вы можете найти список предопределенных макросов.

3 голосов
/ 19 августа 2011

Я рекомендую определить платформу в сценариях сборки, указав -D_i386 -DENDIAN = 1234 -D_linux .Но если вы все еще думаете, что другой предопределенный проект - ваш друг:

http://sourceforge.net/apps/mediawiki/predef/index.php?title=Main_Page

1 голос
/ 18 января 2011

Обычно вы оставляете эту задачу в среде сборки. Либо с помощью таких команд, как uname, если вы можете предположить, что настроен posixy, либо любым другим способом, который считается подходящим.

1 голос
/ 18 января 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...