Visual C++编译器的默认选项

10

你能告诉我在命令行编译时,__DEFAULT__和隐式编译器选项是什么吗?例如:

cl whatever.c

谢谢!

更新:为了澄清:我不关心可用的命令行选项,我甚至在问题中链接了它们。我的问题是,当您未指定任何选项并从命令行编译时使用的隐式默认命令行选项列表。


假设警告:默认行为并不总是与命令行选项匹配。例如,"禁用代码分析" 的默认行为没有命令行选项;唯一的命令行选项是 /analyze(启用代码分析)。 - MSalters
@MSalters,你能给出另一个例子吗?你所描述的可以通过传递“/analyze-”(请参见此处)来实现。 - JBentley
1
@JBentley:它实际上是我按字母顺序找到的第一个(可能是VS2008)。仍然有这样的标志,例如/GF - MSalters
3个回答

5
似乎在微软网站上并没有关于默认值的实际信息,但是Geoff Chappell似乎对此进行了一些研究。以下是链接:http://www.geoffchappell.com/viewer.htm?doc=studies/msvc/cl/cl/initial.htm&tx=27。众所周知,文档中说的和软件实际执行的可能会有所不同。为了进一步回答问题,您可以通过向cl传递/Bd选项来查看cl传递给编译器模块c1xx.dll和c2.dll的选项。
cl /Bd helloworld.cpp

要查看编译器和链接器使用的环境变量,请输入以下命令:

cl /Be helloworld.cpp

哇,我印象深刻!这些选项确实有效,但奇怪的是我在官方文档中找不到任何提及它们的内容。 - Lover of Structure

1

我通常只在谷歌上搜索“cl选项”。
这是当前的热门搜索结果:编译器命令行语法(C++)[MSDN]

像微软文档一般,它有点凌乱,但似乎是完整的。当一个选项是默认设置时,会有注释(尽管不是以任何一致的方式)。


1
为什么人们不能区分“可用命令行选项”和“默认命令行选项”?当您编译一个 .c 文件时,如果没有指定编译器选项,则其中一些选项将默认启用,隐式地。 - user200557
我的回答确实解决了那个问题,也许是你理解能力有问题。 - alex tingle

0

在命令行上检查cl /?link /?。我相信每个版本的默认值都不同。


这仅列出可用的编译器选项,而不是默认的编译器选项。 - user200557
嗯...我记得描述中提到了默认值。我这里没有Windows电脑,所以现在无法检查。 - D.Shawley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接