#include <ctime>
#include <iostream>
#include <cstring>
int main()
{
struct tm tm ;
//memset(&tm, 0, sizeof(struct tm));
strptime("1 Jan 2000 13:00:00", "%d %b %Y %H:%M:%S", &tm);
time_t t =mktime(&tm);
std::cout << ctime(&t);
return 0;
}
g ++ -Wuninitialized -O2 test.cppは、tmが初期化されていないことを警告しません。Valgrindは、memset行が追加されるまで実行します。Linuxのstrptimeのマニュアルページには、初期化する必要があると書かれており、初期化するまで、より複雑なプログラムでランダム化された日付が表示されていました。このような状況で警告を生成するGCCフラグはありますか?