在“<text>”之后无法识别 C++ #define 预处理器指令

C++ #define preprocessor directive is not recognized after "<text>"

我在 MS VS 2015 Enterprise 中使用 C++ 时遇到一些问题。

我有一个预处理器指令,在 \Str.h

\ \Str.h file
Line 96: #define S_COLOR_RED "^1"

并在这些行中使用它,例如:

\ \math\Simd.cpp file
Line 1501: idLib::common->Printf( "   simd->Memcpy() "S_COLOR_RED"X\n" );
Line 1527: idLib::common->Printf( "   simd->Memset() "S_COLOR_RED"X\n" );

问题是,如果指令前有一个“”,C++想把它当作用户自定义字面量来使用,但实际上它只是一个简单的定义常量。

改成如下后生效:

// \math\Simd.cpp
Line 1527: idLib::common->Printf( "   simd->Memset() "
Line 1527: idLib::common->Printf( S_COLOR_RED"X\n" );

这可能是什么原因造成的?所有功劳都归功于 id Tech,因为这些代码片段来自 id Tech 4 引擎。我没有对原始代码做任何修改,只是尝试从下载的源中解决错误。

我尝试搜索有关此问题的更多信息,但没有结果。

感谢您的帮助, 萨那奇

尝试:

dLib::common->Printf( "   simd->Memcpy() " S_COLOR_RED "X\n");
                                          ^           ^
                                          space between 

如果您在它们之间放置 space,则字符串文字将连接起来。