http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55971
Bug #: 55971 Summary: Preprocessor macros with C++11 raw string literals fail to compile Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor AssignedTo: unassig...@gcc.gnu.org ReportedBy: nachms+...@gmail.com It does not seem possible to create a macro which contains a C++ raw string literal, when it should be. Example: ----------------- #include <iostream> #define CREATE_CLIENTS R"(CREATE TABLE "clients"( "clientId" INTEGER PRIMARY KEY AUTOINCREMENT, "clientName" VARCHAR(64) UNIQUE ))" int main() { std::cout << CREATE_CLIENTS << std::endl; return 0; } ----------------- g++ -W -Wall -o test test.cpp -std=c++11 test.cpp:3:24: error: unterminated raw string test.cpp:6:3: warning: missing terminating " character [enabled by default] test.cpp:6:1: error: missing terminating " character test.cpp:10:3: error: stray ‘R’ in program test.cpp:4:3: error: expected unqualified-id before string constant On the other hand, clang seems to be able to handle it: clang++ -W -Wall -o test test.cpp -std=c++11 ./test CREATE TABLE "clients"( "clientId" INTEGER PRIMARY KEY AUTOINCREMENT, "clientName" VARCHAR(64) UNIQUE )