問題タブ [gcc-warning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
7577 参照

c - Wunused-but-set-variable 警告処理

次のコードがあり、gcc-4.6 でコンパイルしているときに警告が表示されます。

警告: 変数 'status' が設定されていますが、使用されていません [-Wunused-but-set-variable]

_DEBUG_ フラグが設定されていない場合、警告が表示されます。この警告を回避するにはどうすればよいですか?

0 投票する
3 に答える
219 参照

c - メンバーのコンパイル エラーはありません

次のコードがあり、コンパイルしようとするとエラーが発生します。

エラー: 'list_item_t' には 'state' という名前のメンバーがありません</p>

このコードを警告やエラーなしでコンパイルするための創造的なアイデアはありますか?

0 投票する
1 に答える
2354 参照

c - -Wcast-qualを正しくアドレス指定する方法

kタイプの変数const char *と、プロトタイプを使用したglibの関数があります

gpointer単に次のように定義されます

この場合、実際にkはキーとして渡しても問題ないことはわかっていますがg_hash_table_replace、gccでエラーが発生します

これはgcc4.6.0の場合です。4.5.0以前では、この警告を抑制するには(char *)への単純なキャストで十分でしたが、gccは「よりスマート」になっているようです。試しまし(char *)(void *)kたが、変数が元々であったことはまだわかっていますconststrdup(3)呼び出さずにこの警告を黙らせるための最良の方法は何kですか?

0 投票する
2 に答える
3162 参照

opengl - 次の gcc 警告を修正するにはどうすればよいですか?

私は OpenGL の学習を開始し、頂点バッファー オブジェクトを使用して回転する立方体を作成することができました。ただし、コードをコンパイルすると、gcc は次の警告を発行します。

これらの警告を修正するにはどうすればよいですか?

これは私のコードです:

さらに、次のコマンドを使用してコードをコンパイルします。gcc sdlogl.c -g -Wall -lSDL -lGL -lGLU

0 投票する
5 に答える
5537 参照

c - Cの16進定数は、L接尾辞にもかかわらず符号なしです。

これは簡単な質問ですが、混乱しています。私はかなり典型的なgcc警告を持っていますが、これは通常簡単に修正できます。
warning: comparison between signed and unsigned integer expressions

0x80000000Lのように、最上位ビットの16進定数がある場合は常に、コンパイラーはそれを符号なしとして解釈します。たとえば、このコードを-Wextraでコンパイルすると、警告(gcc 4.4x、4.5x)が発生します。

私は特に定数に接尾辞を付けているのに、なぜこれが起こっているのですか?

0 投票する
1 に答える
889 参照

c - mingw printf サイズ指定 文字 h

Visual Studio には、printf または wprintf に関係なく、h プレフィックスを使用して 1 バイト文字列を指定すると、次のようなことができるという サイズと距離の仕様表があります。


しかし、mingw gcc と -Wall を使用して同じものをコンパイルすると、次の警告が表示されます。
warning: format '%hs' expects type 'short int *', but argument 2 has type 'char *'

私が行っていることは、mingw で 1 バイト文字列を指定するために受け入れられる方法ですか?

ありがとう

編集-この質問は、以下でかなり詳細に回答されています。簡単な答えは「はい」です。これは mingw で 1 バイト文字列を指定するための受け入れ可能な方法であり、警告は無視できます。

0 投票する
1 に答える
10768 参照

gcc - GCC 警告: ISO C では名前付き可変長マクロは許可されていません

次のコマンドを使用して

コンパイラの警告 root.h:76:22: warning: ISO C does not permit named variadic macros が表示されます

オプション -ansi -std=c99 を使用すると可変引数マクロを使用できると思いますが、とにかくドキュメントによれば...

76行目を編集してみました

これで警告が修正されたかどうかを確認しますが、喜びはありません。

コンパイラのバージョンは Apple の gcc、バージョン 4.2.1 です。これについてあまり心配する必要があるかどうかはわかりませんが、私は警告が本当に好きではありません。欠けているフラグは何ですか?

0 投票する
5 に答える
64737 参照

c - 警告:変数は設定されていますが使用されていません[-Wunused-but-set-variable]

のCソースコードをコンパイルしているときに、次の警告が表示されますgcc 4.6.1

私はこのリンクWunusedを参照しましたが、この警告の原因を正確に知ることができました。この警告の原因と、それを取り除く方法について詳しく教えていただけますか?

[編集]次のコードスニペットがあります。コンパイルすると、上記の警告が表示されます。どうすれば修正できるか教えていただけますか?

0 投票する
1 に答える
2849 参照

c - ・壁なし・リターンタイプ

GCC のマニュアルによると、-Wreturn-typeオプションは で有効になります-Wall。ただし、残りを有効にしたまま無効にする適切な方法が見つかりません-Wall

次のコードを検討してください。

警告なしでコンパイルした場合、出力は生成されません。ここで、オンにすると-Wall、次の行が表示されます。

わかりました、すべていいです。でコンパイルすると-Wreturn-type、同じ出力が生成されます。

-Wreturn-typeしたがって、私はそれがこれらの警告の原因であると結論付けています. しかし、これは出力を生成しないと予想されていたため、そうではないか、もっと悪いことをしている可能性があります。

使用できますが、完全に-Wall無効にすることはできますか? -Wreturn-typeそれとも、利用可能な別のオプションがありませんか?

問題があれば、GCC 4.2.1を搭載したMac OS 10.7(Darwin 11)を使用しています(奇妙なことに、LLVMでコンパイルされています:P)

0 投票する
4 に答える
1482 参照

c - gcc:エラー:構造体または共用体ではないものでのメンバー'rlen'の要求

構造体を含むunsignedcharポインターがあります。次に、次のことを実行します。

ここで、record_t構造にはlenというフィールドが含まれています。これを行うことができず、エラーが発生します。

私はここで何を間違っているのですか?