https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72837
Bug ID: 72837 Summary: -Wundef is not being ignored with pragma Product: gcc Version: 5.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: TrevorJamesHickey at gmail dot com Target Milestone: --- Given the following code: #if MACRO_WITHOUT_A_VALUE int var; #endif int main(){} When compiled with, `g++ -std=c++1z -Wundef -o main main.cpp`, it produces the following warning: main.cpp:1:5: warning: "MACRO_WITHOUT_A_VALUE" is not defined [-Wundef] #if MACRO_WITHOUT_A_VALUE ^ I'd like to keep the warning flag enabled, but suppress this particular instance. I apply the following: #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(){} This only solves the problem in `clang++`. The command `clang++ -std=c++1z -Wundef -o main main.cpp` builds without warnings. The command `g++ -std=c++1z -Wundef -o main main.cpp` builds with the same `[-Wundef]` warning as before. **How can I suppress `-Wundef` warnings in `g++`?** g++ (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0 clang version 3.8.0 http://stackoverflow.com/questions/38831058/wundef-is-not-being-ignored-with-pragma-in-g