VC6→VC8移行時でのtimi_tのキャスト – プログラミング – Home

VC6→VC8移行時でのtimi_tの...
 
通知
すべてクリア

VC6→VC8移行時でのtimi_tのキャスト


え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

現在、VC++6.0から8.0に移行しております
このとき、time_tについて

VC++6.0

void settime(long)という関数に現在の時間をセットするプログラムを

{
time_t nt;
time( &nt );
settime(nt);
}
と記載しています

これをVC++8.0に移行する際に
{
time_t nt;
time( &nt );
settime((long)nt);
}
と修正しました
この修正でも2038年まで日付であれば正しく動作すると思ってよいでしょうか?

正しくは、void settime(long)をvoid settime(__int64)に直すのがいいと思うのです
が、この修正だと、修正が広範囲にわたるため、キャストでいけないかと考えました
ちなみに、VC++6.0の32bitでも、VC++8.0での64bitでも、同じ値で現在の時刻が取得され
て、期待通りに動くことまでは確認しました
あるいは_USE_32BIT_TIME_Tを定義するべきでしょうか?


引用解決済
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

その移植で何を期待しているか次第かな
・2038 年以後も動くようについでに修正するのか
・2038 年以後は動かなくていいから完全互換がいいのか
どっちかな?

_USE_32BIT_TIME_T を使わないとしたら
struct mydata_t {
 long hoge;
 time_t piyo;
 long huga;
};
等の非互換性に対して入念な検証が必要だと思うぞ


返信引用
あー
 あー
(@あー)
ゲスト
結合: 17年前
投稿: 18
 

settime(time_t)になおすのが正解


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました