https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69683
Bug ID: 69683 Summary: multiline raw string R"()" for C++11 warning in false #ifdef when -std=c++98 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jcrada at gmail dot com Target Milestone: --- Created attachment 37590 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37590&action=edit A test file WHEN using a raw string `R"()"` within an `#ifdef X` AND the given definition `X` is not defined AND compiling with `-std=c++98` THEN the compiler emits `warning: missing terminating " character` for the string BUT it is expected from the compiler to ignore everything within the `#ifdef` because `X` was not defined. REPLICATE: gcc-6 -lstdc++ test.cpp -std=c++98 test.cpp:6:22: warning: missing terminating " character std::string x = R"(My ^ test.cpp:8:20: warning: missing terminating " character String)"; ^ `test.cpp` is shown below and it is attached too. SYSTEM: MacOSX Capitan 10.11.3 (15D21) gcc-6 (Homebrew gcc6 6-20160110) 6.0.0 20160110 (experimental) test.cpp: `#include <iostream> int main(int argc, char** argv){ #ifdef CPP11 std::string x = R"(My C++11 String)"; #else std::string x = "My C++98 String"; #endif std::cout << x << std::endl; return 0; }`