我有一个 VS 2005 应用程序。在属性表中定义用户定义的宏以将字符串文字输入到构建环境中。例如 -
Build_Ver, From_Build_Server=""3.1.1234""
在上述情况下,Build_Ver
是宏,其值为From_Build_Server=""3.1.1234""
。请注意,在VS2005的情况下,两对双引号是必需的。如果仅使用一对双引号,则3.1.1234
将宏值视为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.
如果我只使用1对双引号,它适用于VS 2012但在VS 2005上有效。有没有办法让它在VS 2005和VS 2012上同时工作?