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

标签 c++ visual-studio visual-studio-2015 preprocessor-directive

我在 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 

如果您在它们之间放置一个空格,字符串文字将连接起来。

关于C++ #define 预处理器指令在 "<text>"之后无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398336/

相关文章:

c++ - 尝试从 csv 文件输入大量数据时出错

c++ - OpenSSL 摘要 : different results on command-line and in c++

visual-studio - 类名和方法名下拉列表丢失(Visual Studio 设置)

c# - 使用任何 CPU 集编译 C# 应用程序可以处理大 (>2GB) 地址

c++ - "More than one operator + matches these operands"错误

c++ - 从 MFC 中的 DoDataExchange 确定调用者 ID

c++ - 如何使用 Visual Studio 2010 构建 mpir-2.4.0?

c# - 微软报表(RDL)如何查询数据?

visual-studio - 来回切换 Git 分支后如何避免 Visual Studio 重建?

visual-studio-2015 - 使用 Wix 3.10 安装 .net 4.6.2