Visual Studio 在命令行中定义预处理器指令

Posted

技术标签:

【中文标题】Visual Studio 在命令行中定义预处理器指令【英文标题】:Visual Studio define pre-processor directive in the command line 【发布时间】:2016-01-25 20:43:14 【问题描述】:
#ifdef DEBUG_TEST
std::cout << "Hello" << std::endl;
#endif

如何在 VS 中将 #define DEBUG_TEST 作为命令行参数?我试过/DDEBUG_TEST,但指令没有被定义。

【问题讨论】:

你在哪里添加/DDEBUG_TEST?这适用于 cl 命令行,但如果您在 VS IDE 的 Preprocessor Definitions 下输入它,则只需输入 DEBUG_TEST 为什么不只使用预处理器部分......更新了我的答案 【参考方案1】:

不确定您的问题是否存在格式问题,但这应该可以:-

 /D "DEBUG_TEST"

或在预处理器部分输入它

【讨论】:

【参考方案2】:

答案是:

/DDEBUG_TEST

没有空格,没有引号。我相信您也可以将 gcc 语法与 cl 一起使用,但我不确定。如果是这样,这也应该有效:

-DDEBUG_TEST

示例用法:

cl /DDEBUG_TEST source_code.cpp

以下是官方文档: https://msdn.microsoft.com/en-us/library/hhzbb5c8.aspx

【讨论】:

我查看了 MS 文档,但它不起作用。 @JamesKing 您是否从 Visual Studio 命令提示符运行 cl?因为/Dmacro_name[=value]cl 的正确语法,我在编译程序时使用它。 我在属性的命令行参数框中输入它。 哪个命令行框,哪个版本的visual studio?我看到几个框(一个用于链接器,一个用于清单工具,等等),所以它可能在错误的那个(注意我的 VStudio 版本有点过时,你的可能与我的不同)。查看msdn.microsoft.com/en-us/library/3600tzxa.aspx 的第一部分,并确保它在指定的框中? 具体来说,它应该在“属性”>“配置属性”>“C/C++”>“命令行”部分中,我相信,这似乎是将参数传递给cl 的部分。尝试在那里输入选项,看看它是否有效。

以上是关于Visual Studio 在命令行中定义预处理器指令的主要内容,如果未能解决你的问题,请参考以下文章

用CMake设置Visual Studio工程中预处理器定义值

在 Visual Studio 2010 中,如何从父项目继承预处理器定义?

如何在命令行中使用 Visual Studio 编译 x64 代码?

在 Visual Studio 中编译与在命令行中使用 cl 编译

SSIS 包在 Visual Studio 和命令行中有效,但在代理中无效

Visual Studio 2017 - 是不是可以同时为调试和发布配置设置预处理器定义?