Препроцессор С++
Я бы переписал простую С++-программу, используя unix
в качестве имени переменной. Но компиляция программы не удалась.
#include <iostream>
int main() {
int unix = 1;
return 0;
}
После многого поиска в Интернете я попал на этот сайт, который помог мне, сказав, что unix
- это предопределенный макрос, равный 1
.
Я хочу знать список всех таких предопределенных макросов.
Ответы
Ответ 1
Вы можете перечислить все предопределенные макросы с помощью препроцессора GNU cpp
как:
cpp -dM file.cpp
Также обратите внимание, что макросы, такие как unix
, linux
, являются нестандартными, и их можно отключить с помощью флага компиляции -ansi
как:
g++ -ansi file.cpp
И вы можете использовать флаг -ansi
с cpp
также для получения списка всех стандартных предопределенных макросов:
cpp -dM -ansi file.cpp
Ответ 2
коснитесь mysymdef.h; g++ -dM mysymdef.h
Он будет генерировать файл mysymdef.h.gch, который будет иметь все предопределенные символы/макросы для вашей системы. Файл двоичный, но с некоторым редактированием он будет работать.
Подробнее см.
http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation
http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html
Ответ 3
Я не думаю, что есть такой список, который вы запрашиваете, доступный для каждой потенциальной платформы. Вы можете увидеть предопределенные макросы для получения дополнительной информации. "Gcc -dM" будет работать в Linux.
Ответ 4
$ uname
Linux
$ cpp -dM <<<'' | grep unix
#define __unix__ 1
#define __unix 1
#define unix 1