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

时间:2011-10-11 20:05:56

标签: c++ visual-studio-2005

我知道您可以在项目属性中提供命令行或添加开关,但是您可以从源文件中执行此操作吗?我需要为某些源文件设置某些开关,而无需进入项目属性并每次手动执行。那么也许您可以使用C ++源文件中的预处理器来完成它?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

首先:编译/链接不执行您的C ++代码。因此,您无法根据某些C ++条件(如if / else /...)编写C ++ piece'o代码并做出决定(更改此项目的某些项目设置)。

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

这些的常见用途是使代码平台独立。

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

在我的GCC上,我总是发现c ++ config.h是各种cpp指令的一个很好的例子。在我的Windows PC上,它安装在X:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\mingw32\bits\c++config.h

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


另一个选择显然是编写shell / perl / ...脚本来修改项目设置/ Makefile。我建议将自己纠缠在cpp指令中。 :)

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

答案 2 :(得分:0)

如前所述,#pragma语句是特定于供应商的。对于Visual Studio 2005,请查看支持的#pragma语句:Pragma Directives

我还想与thekashyap一起编写脚本来修改每个文件的项目设置,原因如下:

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