C++ 字符串文字作为VS 2012上的环境变量
我有一份VS2005的申请。在属性表中定义用户定义的宏,以将字符串文字输入到生成的环境中。比如说-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=""
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:“#”
此处不应出现此错误