这些常见的C ++编译器标志有什么作用?

时间:2014-04-04 22:42:00

标签: c++ visual-c++ g++

我是C ++的入门者。我仍然对makefile中的标志感到困惑。

-c. -o. -Wall. -g. -std=c++0x.

任何人都可以告诉我这些常见旗帜的作用吗?

2 个答案:

答案 0 :(得分:1)

只有最后一个标志(编译器命令选项)是特定于编译器的。我认为,前三个或四个是事实上的标准,因为,即80年代初期或中期。当然,不能保证任何特定的编译器都能理解它们,但它们并不罕见。

注意:虽然Visual C ++接受-标志前缀表示法,但它通常与/一起用作标志前缀,因为这是Windows中的常见约定。

  • <强> -c
    仅编译,不要链接。

  • <强> -o
    指定输出文件,例如可执行文件。不幸的是弃用了 用于Visual C ++编译器。使用Visual C ++,例如/Fe

  • <强> -Wall
    用g ++所有实用的警告。使用Visual C ++所有警告,包括所有愚蠢的警告,这是一堆!

  • <强> -g
    生成调试信息。由许多编译器支持,但不支持Visual C ++。

然后,

  • -std=c++0x
    是一个特定于g ++编译器的选项,它指定 C ++ 11标准。我记得与-std=c++11的区别,对于同时接受这两者的新编译器版本,前者仍然允许一些特定于g ++的语言扩展。

答案 1 :(得分:0)

那些不是&#34; c ++标志&#34;,这些是编译器的标志,可能是来自g++套件的gcc

所有这些标记都记录在在线和离线文档中,离线文档可能更容易为初学者浏览,因为您只需在查看器中打开pdf并使用搜索引擎搜索一句话。

This are the manuals for gcc