2012-03-06 69 views
2

Fedora 16でGNU gcc 4.6.2を使用しています。私は、サードパーティAPIを使用してアプリケーションを作成しています。多くの警告を受けた。gnu gcc警告を抑制する方法:この宣言では[typedef]は無視されました[デフォルトで有効]

warning: ‘typedef’ was ignored in this declaration [enabled by default] 

どうすればこのように抑制できますか?プログラムを-Wallフラグでコンパイルします。

この文書では、http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.htmlには、-Wunused-local-typedefsのようなものが挙げられました。

私は-Wno-unused-local-typedefsを試しましたが、動作しません。

ありがとうございました。 GCC-ソースコードによれば

+9

この警告の原因となる宣言例を表示できますか? – aschepler

+0

http://stackoverflow.com/questions/6399898/is-the-typedef-name-optional-in-a-typedef-declarationには、その警告を出すさまざまな例が示されています。 –

+0

第三者APIとは何ですか?それはCまたはC++で書かれましたか?おそらく、これはあなたを助けることができます: http://stackoverflow.com/questions/913344/how-can-i-remove-the-vs-warning-c4091-typedef-ignored-on-left-of-spreadsh ? – CygnusX1

答えて

6

(GCC/CP/decl.c:4108):

warning (0, "%<typedef%> was ignored in this declaration"); 

ないコマンド・ライン・フラグが存在しない(すなわち、0を表すものである)、この警告を抑止しますgcc 4.6.2。

7

-wno-unused-local-typedefsはgcc 4.8で動作します。

+1

あなたの答えのポイントは何ですか?これは古いコンパイラのバグだと言いますか?それは彼が間違った方法でオプションを使用しているということですか?それは元のポスターをどんな形でも助けません... – mozzbozz

+0

オリジナルの質問とそれが私の答えにどのように結びついているかを再読してください。 –

+1

おそらく私たちは交差の目的に...私が見ているのは:\t質問者が警告を無効にする方法を尋ねています。そして、「未使用のローカル・タイプ宣言」は彼のためには機能しません。しかし、あなたはただ1つの行で答えるだけです: " - 未使用 - ローカルtypedefはgcc 4.8で動作します"。私は今あなたが何を暗示しようとしていたのか疑問に思っていた(私はあなたに腹を立てたくなかった、ちょうど明確化を望んでいた);)1ライナーではなく、さらにいくつかの言葉で答えるならば、私は今質問と回答を何度も読み返していますが、あなたの答えを提供しようとするメッセージはまだ得られません。 rgds – mozzbozz

4

gccが、あなたは、特定のライブラリがパスがあなたのコードの残りの部分に使用したフラグに関してはこれらのヘッダの特別な治療を可能に-isystemスイッチでシステムライブラリとして扱われるべきで含めるように指定することができます。たとえば、あなたがtest.cppで特定のBoostライブラリを使用してから未使用のローカルのtypedefを持っているので、もしきれいに構築しようとしません上記

g++ -o test{,.cpp} -Wall -Wextra -Werror -I /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib 

とを(私はこれは最近ブーストsignals2ライブラリーを含む使用に走った)次

g++ -o test{,.cpp} -Wall -Wextra -Werror -isystem /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib 

(これは、あなたが含まれているBoostライブラリからの警告をtest.cppに提供したものです) C++ 17では

0

、あなたはmaybe_unused使用する必要があり、それは次のようにひどくstackoverflowのでインデントと考えられていますように、

http://en.cppreference.com/w/cpp/language/attributes

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0212r0.pdf

を参照してください。(申し訳ありませんが、私は、例を投稿could't )

+0

'maybe_unused'はgcc(Debian 6.3.0-18)6.3.0 20170516では動作しません。しかし' __attribute __((未使用)) 'は動作します。未使用のtypedefは、通常[C静的アサーション](https://stackoverflow.com/questions/3385515/static-assert-in-c)に使用されます。 – Ale

-1

-Wallの一部です。が-Wno-unused-local-typedefの後にないことを確認してください。そうした場合、-Wallはオプションを再びオンに戻すだけです。

関連する問題