Clang:哪里定义了-Wall选项?

时间:2016-11-25 21:27:30

标签: c macos gcc makefile clang

我正在阅读Learn C The Hard Way book,练习2。 练习中有一个Makefile(reference to GitHub repo):

CFLAGS=-Wall -g

all: ex1

clean:
    rm -f ex1

我检查了man cc以找到-Wall选项定义,但我找不到它(link to clang documentation)。但是,我在gcc documentation中找到-Wall选项。

  • Q1。为什么我可以将-Wall选项传递给clang,即使它没有在clang中定义?

  • Q2。 clang和gcc之间的关系是什么?

我的开发环境:macOS Sierra 10.12.1,已安装Xcode 8.1。

2 个答案:

答案 0 :(得分:2)

-Wall在Clang中定义。有关其诊断消息(包括-Wall)的参考,请参阅http://clang.llvm.org/docs/DiagnosticsReference.html

  

-Wall

     

此标志控制的某些诊断已启用   默认值。

     

控制-Wmost-Wparentheses-Wswitch-Wswitch-bool

您可以单击其他标记以深入了解所选的所有各种选项。

我发现Clang的文档对于我用过的所有内容都是完整的,尽管我当然还没有完全用尽Clang的功能。

gcccc的共同点多于它们的不同之处,LLVM项目在这里做了非常客观的比较:http://clang.llvm.org/comparison.html

答案 1 :(得分:1)

clang是LLVM项目的一部分。它与GCC完全分开(GCC是GNU项目的一部分);他们没有共享代码。但是,它的设计目标是与GCC 兼容;它实现了几乎所有相同的命令行选项,以及几乎所有与C和C ++相同的扩展。

与gcc相比,clang的文档非常不完整。在clang的文档中没有找到任何-Wall的提及意味着他们还没有完成文档的那部分。