我可以设置visual studio 2005命令行开关在我的代码(即通过pragma/define)

Can I set visual studio 2005 command line switches in my code (ie through pragma/define)?

本文关键字:pragma define 代码 我的 studio visual 设置 2005 命令行 开关 我可以      更新时间:2023-10-16

我知道您可以在项目属性中提供命令行或添加开关,但您可以从源文件中做到这一点吗?我需要为某些源文件设置某些开关,而无需进入项目属性并每次手动执行。所以也许你可以用c++源文件中的预处理器来做?

有一些#pragma可以,例如,改变代码块的代码生成/优化,但我认为这是相当有限的事情。

第一:编译/链接不执行你的c++代码。所以你不能写一段c++代码,然后根据一些c++条件(比如if/else/…)做出决定(改变这个项目的一些项目设置)。

#pragma#defines是预处理器指令,您已经知道。虽然编译器可以理解#pragmas,但是编程能力是有限的,而且通常是编译器特有的。

它们的一个常见用途是使代码与平台无关。

回答你原来的问题"我如何以编程方式修改项目属性(不是手动)?":你可以用#pragmas &#defines(甚至是有条件的)在你的代码中控制各种设置。通常支持是特定于编译器供应商的,所以除非你非常小心,否则你的代码很可能无法移植(跨编译器)。

在我的GCC中,我总是发现c++config.h是各种cpp指令的一个很好的例子。在我的windows电脑上,它安装在X:MinGWlibgccmingw324.5.2includec++mingw32bitsc++config.h

查找支持的cpp指令,编译器的RTM。


另一个选项显然是写shell/perl/…脚本修改项目设置/Makefiles。我建议这样做,而不是让自己纠结于cpp指令。:)

当然,这个选项会在编译之前改变的设置,而不是在编译期间改变的设置。但如果这对你来说不是问题,那就使用这个而不是cpp指令。

如前所述,#pragma语句是非常特定于供应商的。对于Visual Studio 2005,请看这里支持的#pragma语句:Pragma指令

我也会与kashyap关于编写一个脚本来修改每个文件的项目设置,原因如下:

  • 如果你必须添加或更改设置,有一个地方可以修改。
  • 因为只有一个地方可以查看,所以未来的维护者知道在哪里可以找到给定文件的特殊设置。他们不会对隐藏在项目设置对话框深处的手动设置感到惊讶。