繁体   English   中英

C ++ #define预处理程序指令在“ <text> ”

[英]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引擎。 我没有对原始代码进行任何修改,只是试图解决下载源中的错误。

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

谢谢您的帮助,Sanapci

尝试:

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

如果在字符串文字之间插入空格,则它们将串联在一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM