問題タブ [gcc-pedantic]

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 投票する
2 に答える
29282 参照

c - エラー: 初期化要素はロード時に計算できません

構造体を取る関数があり、その変数を配列に格納しようとしています:

しかしgcc -Wall -ansi -pedantic-errors -Werror、次のエラーが表示されます。

初期化要素は読み込み時に計算できません

私には問題ないように見えますが、何が問題なのですか?

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

c++ - scope g++ pedantic compile

特定のファイルに対して -pedantic スイッチを制限することは可能ですか? たとえば、標準で参照するalsa-libを使用してコンパイルします

ただし、このファイルで -pedantic パニックが発生します。私は、自分のコードの警告や奇妙な点を修正することに関心がありますが、alsa やその他の関係のないサード パーティは修正しません。

-pedantic の使用法をスコープする方法はありますか?

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

gcc - static_cast / float / bitset / const の奇妙さ

ほんの数時間前に、次の質問が出てきました:変数は定数式に現れることはできません

OPにとって幸いなことに、提供された回答で彼の問題は解決しましたが、解決策を再現できません。

コードをさらに単純化しようとしましたが、次のことに行き詰まっています。

でコンパイルした場合-pedantic、最初の例はコンパイラによって受け入れられますが、除算のあるもの (ただし明らかに同じ数) は拒否され、「length_2 は定数式に表示できません」というメッセージが表示されます。

なし-pedanticでもありでも、-pedantic -std=c++0xそれ以上の警告なしに受け入れられます。

これは完全な出力ですg++ -v(ドイツ語で申し訳ありませんが、とにかく正しい情報が得られると確信しています):

この動作の理由は何ですか? 1.0f特別な定数として認識されているため、 static_cast の動作が変わっていると思いますか?

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

c - LFを待たずにキーを読み取る機能

LFを待たずにキーボードからキーを読み取る関数(conio.hのgetch()など)を探して、インターネット全体を探しています。残念ながら、スイッチ -ansi と -pedantic を使用して gcc でコンパイルする必要があるため、getch() は役に立たなくなります。標準に一致する他の関数を知っているかもしれません。

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

c++ - GCC は、オブジェクト ポインタ キャストへの関数ポインタについて警告します

関数ポインターとオブジェクト ポインターの間のキャストは、一般的な意味では未定義の動作ですが、POSIX (参照: dlsym ) と WinAPI (参照: GetProcAddress ) ではこれが必要です。

これを考えると、そのようなコードがとにかくプラットフォーム固有の API をターゲットにしているという事実を考えると、関数ポインターとオブジェクト ポインターに互換性がないプラットフォームへの移植性は実際には無関係です。

しかし-Wpedanticはとにかくそれについて警告し、#pragma GCC diagnostic ignored "-Wpedantic"効果はありません:

-Wpedanticは適切な警告を表示するため、有効にしておきたいのですが、関数ポインターからオブジェクト ポインターへのキャストに関する無関係な警告の海の中で実際の警告やエラーが失われることは望ましくありません。

これを達成する方法はありますか?

Windows (MinGW) で GCC 4.8.0 を実行:

コードサンプル

エミット( -Wpedanticを使用):

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

c - ISO C90 では、配列のために宣言とコードの混合を禁止しています。これを修正するにはどうすればよいですか?

を使用してコンパイルしてみました-gccが、意図したとおりに機能しましたが、で追加すると-pedanticコンパイルされません。私はまだプログラミングの初心者で、この問題に遭遇したのは初めてなので、私にとってはかなりの問題です。

エラーの原因となっているコードは次のとおりです。

学びたいので修正コードだけでなく、解決策を教えていただけるとありがたいです。

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

c - C - 制御が非 void 関数の終わりに達する

スレッド化プログラムを作成していますが、pthread_create メソッドには void* 関数が必要です。

「コントロールが非無効関数の終わりに達しました」という警告が表示されますが、その理由を理解しています (公式の return ステートメントがないため)。

NULLを返すだけでいいですか?戻り値がプログラム内の他のものに影響を与えるとは思いませんが、マルチスレッド プログラムでプログラミングするときにこの警告を回避するための標準は何なのか疑問に思っています。