根據標準,mktime
應該進行歸一化 - 當你想一分半鐘添加到struct tm
,你加90秒的tm_sec
並調用mktime
,而忽略它的返回值。什麼mktime與參數溢出?
我在標準中沒有找到的是參數是否歸一化,即使它不能在time_t
(例如將年份設置爲2100)中表示。
那麼,這段代碼是否安全?
struct tm future;
memset(&future, 0, sizeof(future));
future.tm_mon = 1;
future.tm_sec = 90; //I want this to be normalised by mktime
future.tm_year = 200; //but this can cause troubles
mktime(&future);
//future.tm_sec should be 30
//future.tm_min should be 1
//future.tm_year should be still 200
在調用'mktime'之後,你不能只將200賦給'tm_year'嗎? –
我不認爲這一年可能是1900年前的任何事 –
K-ballo:因爲我將不得不處理閏年(例如,在向2008-02_28添加幾個小時時) –