問題タブ [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.
c - Wunused-but-set-variable 警告処理
次のコードがあり、gcc-4.6 でコンパイルしているときに警告が表示されます。
警告: 変数 'status' が設定されていますが、使用されていません [-Wunused-but-set-variable]
_DEBUG_ フラグが設定されていない場合、警告が表示されます。この警告を回避するにはどうすればよいですか?
c - メンバーのコンパイル エラーはありません
次のコードがあり、コンパイルしようとするとエラーが発生します。
エラー: 'list_item_t' には 'state' という名前のメンバーがありません</p>
このコードを警告やエラーなしでコンパイルするための創造的なアイデアはありますか?
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
たが、変数が元々であったことはまだわかっていますconst
。strdup(3)
呼び出さずにこの警告を黙らせるための最良の方法は何k
ですか?
opengl - 次の gcc 警告を修正するにはどうすればよいですか?
私は OpenGL の学習を開始し、頂点バッファー オブジェクトを使用して回転する立方体を作成することができました。ただし、コードをコンパイルすると、gcc は次の警告を発行します。
これらの警告を修正するにはどうすればよいですか?
これは私のコードです:
さらに、次のコマンドを使用してコードをコンパイルします。gcc sdlogl.c -g -Wall -lSDL -lGL -lGLU
c - Cの16進定数は、L接尾辞にもかかわらず符号なしです。
これは簡単な質問ですが、混乱しています。私はかなり典型的なgcc警告を持っていますが、これは通常簡単に修正できます。
warning: comparison between signed and unsigned integer expressions
0x80000000Lのように、最上位ビットの16進定数がある場合は常に、コンパイラーはそれを符号なしとして解釈します。たとえば、このコードを-Wextraでコンパイルすると、警告(gcc 4.4x、4.5x)が発生します。
私は特に定数に接尾辞を付けているのに、なぜこれが起こっているのですか?
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 バイト文字列を指定するための受け入れ可能な方法であり、警告は無視できます。
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 です。これについてあまり心配する必要があるかどうかはわかりませんが、私は警告が本当に好きではありません。欠けているフラグは何ですか?
c - 警告:変数は設定されていますが使用されていません[-Wunused-but-set-variable]
のCソースコードをコンパイルしているときに、次の警告が表示されますgcc 4.6.1
。
私はこのリンクWunusedを参照しましたが、この警告の原因を正確に知ることができました。この警告の原因と、それを取り除く方法について詳しく教えていただけますか?
[編集]次のコードスニペットがあります。コンパイルすると、上記の警告が表示されます。どうすれば修正できるか教えていただけますか?
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)
c - gcc:エラー:構造体または共用体ではないものでのメンバー'rlen'の要求
構造体を含むunsignedcharポインターがあります。次に、次のことを実行します。
ここで、record_t構造にはlenというフィールドが含まれています。これを行うことができず、エラーが発生します。
私はここで何を間違っているのですか?