2016-11-25 13 views
2

私はMakefileにはこのような運動(reference to GitHub repo)でありLearn C The Hard Way book、運動2. を読んでいる:link to clang documentationClang:-Wallオプションはどこに定義されていますか?

CFLAGS=-Wall -g 

all: ex1 

clean: 
    rm -f ex1 

私は-Wallオプション定義を見つけるために、man ccをチェックし、私はそれを見つけることができませんでした)。しかし、私は-Wallオプションをgcc documentationに見つけました。

  • Q1。なぜclangで定義されていないのに、-Wallオプションをclangに渡すことができますか?

  • Q2。 clangとgccの関係は何ですか? MacOSのシエラ10.12.1、Xcodeの8.1がインストールされています。私の開発環境は


+1

一般に、GCCがこのオプションをサポートしている場合、 'clang'も同様です。 'clang'にはGCCにはないいくつかのオプションがあります(例えば' -Weverything')。過去のコードを取得することを幸運に - 「すべて」。それは不可能ではありませんが、警告の中には一般的にあまり役立たないものもあります(たとえば、標準で定義されたマクロをテストする完璧なコードについて警告する人もいれば、コメントのテキスト(!)を分析して、私は '-Wno-padded -Wno-vla -Wno-reserved-id-macro -Wno-documentation-unknown-command'を' -Weverything'と一緒に使用します。 –

+0

@nosにリンクしたそのページの 'エラーと警告メッセージを制御するオプション'の下に、 '-Wall'を含むすべての可能なフラグを詳細に示す診断参照へのリンクがあります。 –

+0

@Keita、あなたが探していたドキュメントを提供した場合は、回答を受け入れられた解決策としてマークしてください。そうすれば、この質問には質問者にとって効果的な解決策があります。 –

答えて

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

+0

回答と診断フラグページへの直接リンクをありがとう。それが私がチェックしたかったものです! – Keita

-1

clangはLLVMプロジェクトの一部です。 GCC(これはGNUプロジェクトの一部です)とは完全に別です。彼らはコードを共有しません。しかし、それはと互換性があり、GCCを伴うの設計目標を持っています。これはほぼすべての同じコマンドラインオプションを実装しており、ほぼすべてCとC++の拡張機能を実装しています。

clangのドキュメントはgccに比べて非常に不完全です。 clangのドキュメントで-Wallの言及が見つからないということは、ドキュメントのその部分をまだ完成させていないということだけを意味します。

+1

私はこれが不必要に炎症(私の意図ではない)とは思えないが、私はGoogleから利用可能な-Wfooオプションのドキュメントやユーザーマニュアルのリンクからリンクを与えなかったので、 Clang。 「clangのドキュメンテーションはgccに比べて非常に不完全であると主張する前に、それを見つける努力をしていたはずだと思います。clangのドキュメンテーションの壁は何も言及していないことを意味します。まだドキュメント。 " –

+0

@GregSchmit私はマニュアル全体について言及していましたが、私がそれらについて述べたことは事実上真実であり、両方を読んだ人にとって自明であるべきです。私はポイントを示すいくつかのリンクを編集するにはあまりにも怠惰であることを認め、もしそれがあなたの特権であることを私に伝えたいのであれば、 – zwol

+0

ドキュメントが「gcc」のように素晴らしくないか完全ではないと主張したいのであれば、それは赤ちゃんです(質問とはほとんど関係ありません)。私は、 '-Wall'の言及を見つけておらず、ドキュメントのその部分を終わらせることができなかったと具体的に話していました。両方の文書を読んだら(あなたが持っているように)、コンパイラの警告スイッチがすべて定義されていることがわかっているでしょう。 –

関連する問題