Visual c++ 将预处理器符号定义为包含空格的字符串

Visual c++ 将预处理器符号定义为包含空格的字符串,visual-c++,makefile,preprocessor,whitespace,Visual C++,Makefile,Preprocessor,Whitespace,我正在处理一个遗留项目(如果需要的话,用C语言),它需要使用MS Visual Studio 2008 SP1 具体来说,工具链中的一个工具生成一个MSVC makefile(.mak),然后由MSVC2008中的向导将其转换为一个项目文件(.vcproj),在该文件中可以对其进行编译/调试 我试图定义一个预处理器符号(/D),它通过模板makefile被设置为等于一个环境变量。此环境变量的值是字符串,可能包含空格 无论是通过实验还是通过谷歌,我似乎都找不到正确的语法。向导似乎以一种不可预测的方

我正在处理一个遗留项目(如果需要的话,用C语言),它需要使用MS Visual Studio 2008 SP1

具体来说,工具链中的一个工具生成一个MSVC makefile(
.mak
),然后由MSVC2008中的向导将其转换为一个项目文件(
.vcproj
),在该文件中可以对其进行编译/调试

我试图定义一个预处理器符号(
/D
),它通过模板makefile被设置为等于一个环境变量。此环境变量的值是字符串,可能包含空格

无论是通过实验还是通过谷歌,我似乎都找不到正确的语法。向导似乎以一种不可预测的方式弄乱了引号和空格……例如,如果我将生成的makefile

/D "MYSYMBOL=\"my string\"" /D "MYOTHERSYMBOL=\"someOtherString\"
Visual Studio的向导错误地将以下内容放入项目文件中:

/D /D "MYSYMBOL=\" my string\"" "MYOTHERSYMBOL=\" someOtherString\"
(还要注意转义引号后的空格)

同样地:

input : /D "MYSYMBOL=\"my string\"" /D "MYOTHERSYMBOL=\"someOtherString\"
output: /D /D "MYSYMBOL=\" my string\"" "MYOTHERSYMBOL=\" someOtherString\" 

input : /D"MYSYMBOL=\"my string\"" /D"MYOTHERSYMBOL=\"someOtherString\"
output: /D"MYSYMBOL=\"my /D"MYOTHERSYMBOL=\"someOtherString\" string\""

input : /DMYSYMBOL=\"my string\" /DMYOTHERSYMBOL=\"someOtherString\
output: /DMYSYMBOL=\"my /DMYOTHERSYMBOL=\"someOtherString\" string\"

input : /DMYSYMBOL="""my string""" /DMYOTHERSYMBOL="""someOtherString"""
output: /DMYSYMBOL="""my /DMYOTHERSYMBOL="""someOtherString""" string"""

...etc. 

有办法做到这一点吗?或者我应该采用完全不同的方法来获取环境变量

这似乎是“向导”中的一个问题/错误。我不知道我们该如何帮助你。@MadScientist我知道,这不是我发现的MSVC2008的唯一缺点:)我只是把它发布到世界上,看看是否有人以前遇到过同样的问题,并设法解决了它。这也是我最后一句话:也许有一种完全不同的方法?