我有一个VS 2005应用程序。用户定义的宏在属性表中定义,以将字符串文字输入构建环境。例如 -
Build_Ver, From_Build_Server=""3.1.1234""
在上述情况下,Build_Ver
是宏,它的值是From_Build_Server=""3.1.1234""
。请注意,在 VS2005 的情况下,两对双引号是必需的。如果仅使用一对双引号,则宏值被视为3.1.1234
for From_Build_Server
。
// /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.
当试图在VS 2012上复制相同的内容时,它会做一些不同的事情。对于同一个宏,它给/D "From_Build_Server=\"\"3.1.1234\"\""
环境带来了 。
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 上都工作?