問題タブ [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.
c - void ポインターとして配列パラメーターをトラバースする方法
qsortのような同様の「汎用」プロシージャがあります。これには、voidポインタ(配列を指す)と関数ポインタパラメータがあります。この関数は、どのタイプの配列でも機能するはずです。
例:
ただし、これにより次の警告が表示されます (gcc test.c -pedantic-errors):
そして、いくつかの調査の結果、このような void ポインターを使用するのは悪い習慣であることがわかりました。(例: C の void ポインターのポインター演算)
では、標準ライブラリは qsort のようなものをどのように処理するのでしょうか? このコード ( http://aturing.umcs.maine.edu/~sudarshan.chawathe/200801/capstone/n/qsort.c ) を見ると、次のようになります。
実際の型に関係なく (char *) にキャストしていますか?
c++ - PAPI をリンクするときにエラーが発生する
Arch Linux x86_64 で、PAPI 5.4.3.0 ライブラリを使用するプロジェクトをビルドしようとしています。
簡単にするために、これらの 2 つのファイルで理解できないことを再現しました。
A.cpp
B.cpp
それを(オブジェクトファイルに)コンパイルすると、次のようになります。
-pedanticフラグでエラーが発生するのに、警告が発生しないのはなぜですか?(2)
3回目の実行で何も発生しないのはなぜですか(インクルードを切り替えるだけです)?
c - 構造体 AND 型を警告なしで前方定義する
私たちの大学の宿題提出システムは、プログラミングのスキルに焦点を当てる代わりに、提出物にばかばかしく非現実的な要件を設定しています。これを回避するために、プリプロセッサとその他のいくつかのトリックを使用して、宿題のソリューションを 1 つのファイル (要件の 1 つ) にマージします。
もう 1 つの要件は、警告が発生して-Wpedantic
はならず、有効になっていることです。関数呼び出しで使用できるように、 struct
inを前方宣言します。node.h
別のファイルでは、edge.h
完全な定義は次のように読み取られます。
次の警告が表示されます。
私が言ったようにファイルがマージされているので、「main.c」のことで混乱しないでください。
どの前方宣言が正しく、警告はありませんか?
c++ - -Wno-pedantic は古い gcc では無視されます
ゼロ引数可変引数マクロを使用している C++ アプリケーションがあります。ただし、さまざまな回答でSOにここに投稿された標準準拠のソリューションはあまり好きではなく、GCC固有のものを維持して##__VAR_ARGS__
ください。
ただし、できるだけ多くの警告をキャッチしたいと思います。
私のビルド システムは meson で、オプションを渡し、追加のプロジェクト引数として--buildtype=debugoptimized --warning_level=2 --werror=true
指定します。-Wno-pedantic
Ob Ubuntu 18.04、gcc 7.3.0、meson 0.45.1 これにより、コンパイラに次のオプションが追加されます-Wall -Wextra -Werror -Wpedantic -Wno-pedantic -std=c++11
。すべてが正常にビルドされます。
CentOS 7.4.1708、gcc 4.8.5、meson 0.44.1 で同じコード、同じオプションを使用すると、まったく同じオプションがコンパイラに追加されますが、コンパイルされず、次のエラーが発生します。
ISO C99 requires rest arguments to be used
(可変長マクロの場合)
-Wno-pedantic
このコンパイラでは無視されているようです。
警告オプションを少しいじることはできますが、Ubuntu または CentOS のいずれかでビルドが失敗します。Ubuntu ビルドが失敗した場合、エラー メッセージは少し異なります。
ISO C++11 requires at least one argument for the "..." in a variadic macro
これまでに見つけた両方のビルドを成功させる唯一の解決策は、プロジェクト引数として使用meson --buildtype=plain --warning_level=1 -werror=true
して設定することです。-Wall -Wextra
したがって、これがコンパイラの問題なのか、メソンの問題なのか、それとも私がヒットしている不幸なバージョンの違いなのかはわかりません。