Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符串文字作为VS 2012上的环境变量_C++_Macros_Visual Studio 2005_Visual Studio 2012 - Fatal编程技术网

C++ 字符串文字作为VS 2012上的环境变量

C++ 字符串文字作为VS 2012上的环境变量,c++,macros,visual-studio-2005,visual-studio-2012,C++,Macros,Visual Studio 2005,Visual Studio 2012,我有一份VS2005的申请。在属性表中定义用户定义的宏,以将字符串文字输入到生成的环境中。比如说- Build_Ver, From_Build_Server=""3.1.1234"" 在上述情况下,Build\u Ver是宏,它的值是来自\u Build\u Server=”“3.1.1234”“。请注意,对于VS2005,两对双引号是必需的。如果仅使用一对双引号,则对于来自\u Build\u Server的,宏值被视为3.1.1234 // /D "From_Build_Server=""

我有一份VS2005的申请。在属性表中定义用户定义的宏,以将字符串文字输入到生成的环境中。比如说-

Build_Ver, From_Build_Server=""3.1.1234""
在上述情况下,
Build\u Ver
是宏,它的值是来自\u Build\u Server=”“3.1.1234”“。请注意,对于VS2005,两对双引号是必需的。如果仅使用一对双引号,则对于来自\u Build\u Server的
,宏值被视为
3.1.1234

// /D "From_Build_Server=""3.1.1234"""

std::string str(From_Build_Server);

// works on VS 2005 as the value is "3.1.1234". It strips away 1 pair of "" 
// quotes.
与2012年相比,当尝试在上复制相同内容时,它会做一些不同的事情。对于同一宏,它会将\u Build\u Server=\“\”3.1.1234\“\”
中的
/D”带到环境中

std::string str(From_Build_Server);  // Fails on VS 2012 as the value is 
                                     // ""3.1.1234"". Not stripping by default.

如果我只使用一对双引号,它在VS 2012上有效,但在VS 2005上中断。有什么方法可以使它在VS 2005和VS 2012上都工作吗?

@WhozCraig stringizer操作符仅在宏定义中使用时工作,即在
\define
@WhozCraig的“主体”内如果我没有错,stringizer用于连接。不管怎样,我试了你的建议。它不起作用:(@WhozCraig Error:
“#”
此处不应出现此错误