首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VS2010 _USE_32BIT_TIME_T 無效:宏定義位置須在所有頭文件之前

     編輯:程式設計疑難解答

現象

在 `.cpp` 文件頂部定義 `#define _USE_32BIT_TIME_T`,但 `sizeof(time_t)` 仍為 8 (64位),未生效。

原因

宏**必須在包含任何 CRT 頭文件 (如 ``, ``, `stdafx.h`) 之前定義**。
`stdafx.h` (預編譯頭) 通常已包含 ``,若在 `stdafx.h` 之後定義,CRT 內部已按 64 位編譯 `time_t`,宏無效。

修正方法

  1. 移至 `stdafx.h` 最頂部 (在所有 `#include` 之前):
// stdafx.h
#define _USE_32BIT_TIME_T   // ← 第一行
#include 
#include 
#include 
...
  1. 或專案屬性 → C/C++ → Preprocessor → Preprocessor Definitions 添加 `_USE_32BIT_TIME_T` (全局生效,無需修改代碼)。

驗證

cout << sizeof(time_t) << endl; // 應輸出 4

注意

  • 32 位 `time_t` 範圍至 2038 年 (Y2038 問題),**現代應用請保持 64 位**,除非維護極舊代碼/嵌入式平台。
  • VS2010 已停止主流支持,**強烈建議升級至 VS2022** 獲得 C++17/20/23 支援、更好診斷、安全更新。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved