あるとすれば、-Wformat との違いは何ですか?
これは GCC から借用したもので、置き換えに適したドロップになるように設計されています。GCC の説明:
-Wformat=2
-Wformat に加えて、-Wformat に含まれていないフォーマット チェックを有効にします。現在、`-Wformat -Wformat-nonliteral -Wformat-security -Wformat-y2k' と同等です。
それはあなたの質問のほとんどに答えます。
これは何かをしますか?
はい。次のプログラムは、の存在 (または不在) に応じて、さまざまな警告を発します-Wformat=2
。
__attribute__((__format__ (__printf__, 1, 2)))
static void F(const char* const pString, ...) {
}
int main(int argc, const char* argv[]) {
F("", 0);
F(argv[0], 0);
const char str[] = "aaa";
F(str, 0);
F("%i", 0);
F("%i");
return 0;
}
注: Clang が にロールイン-Wformat-security
したよう-Wformat
です。
最後に、私はテスト-Wformat-y2k
していませんが、GCC によって次のように定義されています。
-Wformat-y2k
-Wformat が指定されている場合、年が 2 桁しか表示されない可能性がある strftime フォーマットについても警告します。