カレンダーを作成しようとしているので、time_tとlocaltime_sを使用して時刻と日付の情報を保存し、Calendarクラスの個々のメンバーに保存します。
void Callendar::Initialize()
{
time_t now = time(0);
tm *localTime = null;
localtime_s(localTime, &now);
LocalSeconds = localTime->tm_sec;
LocalMinutes = localTime->tm_min;
LocalHours = localTime->tm_hour;
LocalDays = localTime->tm_mday;
LocalMonths = localTime->tm_mon;
LocalYears = localTime->tm_year;
DaysSinceSunday = localTime->tm_wday;
DaysSinceJanuaryFirst = localTime->tm_yday;
HoursDaylightSavings = localTime->tm_isdst;
}
すべて正常にコンパイルされますが、実行時に次のようになります。
デバッグアサーションに失敗しました!
プログラム:C:\ Users \ MyPC \ Desktop \ Framework \ Framework \ Debug \ Framework.exeファイル:f:\ dd \ vctools \ crt_bld \ self_x86 \ crt \ src \ loctim64.c行:69
式:(ptm!= NULL)
失敗したassertメッセージを閉じると、次の行で標準のデバッグエラーが発生します。
static __inline errno_t __CRTDECL localtime_s(struct tm * _Tm, const time_t * _Time)
{
return _localtime64_s(_Tm, _Time);
}
これは基本的に、 Calendar:Initialize()で* localtime_s(localTime、&now); *を呼び出した結果です。 この機能の非推奨バージョンを使用できますか?ローカル時間を取得する他の関数があることは知っていますが、どれかわかりませんは「適切な」ものです。他の人は、「localtime」を使用すべきではないと私に提案しましたが、localtime_sも機能していないようです。