1

次のコードは機能するはずです (stackoveflow で受け入れられている回答です) が、どういうわけか 2 つの警告が表示され、その結果、セグメンテーション エラーが発生します。どうしたの?

time_t timer;
char buffer[25];
struct tm* tm_info;

time(&timer);
tm_info = localtime(&timer);

strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info);

bead.c:61: 警告: 代入により、キャスト bead.c:63 なしで整数からポインターが作成されます: 警告: 組み込み関数 'strftime' の暗黙の宣言に互換性がありません

line 61 is tm_info = localtime(&timer);
and line 63 is strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info);
4

3 に答える 3

2

それで...コンパイラはlocaltime整数を返し、strftime存在しないと考えていますか?

を含めて <time.h>よろしいですか?

于 2012-11-08T19:51:37.240 に答える
0

「gccバージョン4.4.3(Ubuntu 4.4.3-4ubuntu5)」でテストしましたが、すべて正常に動作しました。

ありがとう!

于 2012-11-08T19:48:43.017 に答える
0

time.h を含めないと、このコードはセグメンテーション違反になります。

time.h がないと、コンパイラは関数のシグネチャを認識せず、int を返す関数であると想定します (私の記憶が良ければ)。

簡単に言うと、time.h を含めます。

于 2012-11-08T19:52:25.477 に答える