我正在阅读 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
选项.
问题 1。为什么我可以将
-Wall
选项传递给 clang,即使它没有在 clang 中定义?问题 2。这里的clang和gcc是什么关系?
我的开发环境:macOS Sierra 10.12.1,安装Xcode 8.1
最佳答案
-Wall
在 Clang 中定义。有关其诊断消息(包括 -Wall
)的引用,请参阅 http://clang.llvm.org/docs/DiagnosticsReference.html .
Some of the diagnostics controlled by this flag are enabled by default.
Controls -Wmost, -Wparentheses, -Wswitch, -Wswitch-bool.
您可以单击其他标志以更深入地了解所有已选择的各种选项。
我发现 Clang 的文档对于我用它做的所有事情都是完整的,尽管我当然还没有穷尽 Clang 的功能。
gcc
和 cc
的共同点多于不同之处,LLVM 项目在这里做了一个相当客观的比较:http://clang.llvm.org/comparison.html .
关于Clang:在哪里定义了 -Wall 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40812465/