我在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
答案 0 :(得分:1)
尝试:
dLib::common->Printf( " simd->Memcpy() " S_COLOR_RED "X\n");
^ ^
space between
如果在它们之间放置一个空格,则字符串文字会连接。