[環境]
WinXp(Sp2) VC++2005 コンソールアプリケーション
[質問]
VC++2005で現在日付を取得する関数を作成しています。
struct tm *s_time;
time_t the_time;
(void) time(&the_time);
s_time = localtime(&the_time);
上記のようにすると、
warning C4996: 'localtime' が古い形式として宣言されました。
となるので
struct tm *s_time;
time_t the_time;
(void) time(&the_time);
localtime_s(s_time, &the_time);
上記のように変えたのですが、
warning C4700: 初期化されていないローカル変数 's_time' が使用されます
となってしまいました。
warningがでないようにするにはどうすればよいでしょうか?
よろしくお願い致します。
マニュアル
http://msdn2.microsoft.com/ja-jp/library/a442x3ye(VS.80).aspx
によると
>struct tm *s_time;
↓
struct tm s_time;
>localtime_s(s_time, &the_time);
localtime_s(&s_time, &the_time);
>struct tm *s_time;
↓
struct tm s_time;
>localtime_s(s_time, &the_time);
localtime_s(&s_time, &the_time);
Blueさん、
早速の回答ありがとうございます。
上記のように修正したらwarningがなくなりました。
解決とさせていただきます。
またよろしくお願い致します。
なぜ、こう変更したらOKなのか理解できているならいいですが、
大丈夫でしょうか。
関数の引数がポインタ渡しになっている場合の考え方はとても大事なので
ちゃんと理解できるまで内容の確認をしっかりされてください。
同じようなケースはいくらでも有りますので。