我是C ++的入门者。我仍然对makefile中的标志感到困惑。
-c. -o. -Wall. -g. -std=c++0x.
任何人都可以告诉我这些常见旗帜的作用吗?
答案 0 :(得分:1)
只有最后一个标志(编译器命令选项)是特定于编译器的。我认为,前三个或四个是事实上的标准,因为,即80年代初期或中期。当然,不能保证任何特定的编译器都能理解它们,但它们并不罕见。
注意:虽然Visual C ++接受-
标志前缀表示法,但它通常与/
一起用作标志前缀,因为这是Windows中的常见约定。
<强> -c
强>
仅编译,不要链接。
<强> -o
强>
指定输出文件,例如可执行文件。不幸的是弃用了
用于Visual C ++编译器。使用Visual C ++,例如/Fe
。
<强> -Wall
强>
用g ++所有实用的警告。使用Visual C ++所有警告,包括所有愚蠢的警告,这是一堆!
<强> -g
强>
生成调试信息。由许多编译器支持,但不支持Visual C ++。
然后,
-std=c++0x
强> -std=c++11
的区别,对于同时接受这两者的新编译器版本,前者仍然允许一些特定于g ++的语言扩展。答案 1 :(得分:0)
那些不是&#34; c ++标志&#34;,这些是编译器的标志,可能是来自g++
套件的gcc
。
所有这些标记都记录在在线和离线文档中,离线文档可能更容易为初学者浏览,因为您只需在查看器中打开pdf并使用搜索引擎搜索一句话。