Учитывая следующий код:-Wundef не игнорируются с прагмой в г ++
#if MACRO_WITHOUT_A_VALUE
int var;
#endif
int main(){}
при компиляции, g++ -std=c++1z -Wundef -o main main.cpp
,
производит следующее предупреждение:
main.cpp:1:5: warning: "MACRO_WITHOUT_A_VALUE" is not defined [-Wundef]
#if MACRO_WITHOUT_A_VALUE
^
я хотел чтобы включить флаг предупреждения, но подавить этот конкретный экземпляр.
я применяю следующее:
#ifdef __GNUC__
#pragma GCC diagnostic ignored "-Wundef"
#pragma GCC diagnostic push
#endif
#if MACRO_WITHOUT_A_VALUE
int var;
#endif
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
int main(){}
Это только решает проблему в clang++
.
Команда clang++ -std=c++1z -Wundef -o main main.cpp
строит без предупреждений.
Команда g++ -std=c++1z -Wundef -o main main.cpp
строит с тем же [-Wundef]
предупреждение, как раньше.
Как я могу подавить -Wundef
предупреждений в g++
?
g++ (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0
clang version 3.8.0
Можете ли вы использовать '#if defined (MACRO_WITHOUT_A_VALUE) && MACRO_WITHOUT_A_VALUE'? – Ryan
Возможно, но я обернуваю сторонний код, который я бы предпочел не изменять. –
Вместо этого оберните его в '# ifdef'? – Ryan