2 qm  12 QM__12 于 2016.04.08 10:04 提问

vs2010中使用#define _USE_32BIT_TIME_T无效

如题,最近在看各种关于c++的资料,无意中发现**time__t**类型在VS2005之前是32位,于是我试着让现在已是64位的**time__t**使用原来的32位格式。查完各种资料,据说在文件头加上**#define USE_32BIT_TIME_T**就行,但是我在我写的.cpp文件头上加上这句话,使用**sizeof(time_t)**,竟然还是8而不是4,请问这个是为什么?
以下是程序最上面的那部分:

 #define _USE_32BIT_TIME_T
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <time.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])

3个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.08 11:04
已采纳

要放在最前面,你stdafx.h里面应该还包含了别的文件把,放在stdafx.h里面的最前面

QM__12
QM__12 这个好用!!
2 年多之前 回复
xiaoxiao1008622
xiaoxiao1008622   2016.04.08 10:34

具体设置方法如下: Property Pages->C/C++->Preprocessor->Preprocessor Definitions增加_USE_32BIT_TIME_T宏.

QM__12
QM__12 这个方法也不错!!
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.08 10:15

VS2005 与_USE_32BIT_TIME_T 预定义宏的问题
_USE_32BIT_TIME_T 注意此宏
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
VC6.0 vs2008 和 VS2010 time_t的一些区别 持续更新
time_t类型。 在VC6和 vs2008 下,该类型定义如下: typedef long time_t;        /* time value */ 但在VS2010中定义如下: #ifndef _TIME_T_DEFINED #ifdef _USE_32BIT_TIME_T typedef __time32_t time_t;      /
VS2005 与_USE_32BIT_TIME_T 预定义宏的问题
 去年写的一个VS2005服务程序,最近需要重新增加功能,增加功能后却发现一直无法正常进行SOCKET通讯了,仔细调试后发现是发送的数据结构发生了错位引起的,我于是回想起当初写的时候曾改过一个编译设置,却老是想不起来了,真后悔当时没有记下来,想了很久,终于让我想起来了,就是因为TIME_T结构在VS2005里是64位引起的,而VC6写的另一个程序是32位,2边通讯的时候就自然产生了错位.具体设
VS2010中,ON_WM_NCHITTEST宏编译不过的修改方法
 转 http://www.cnblogs.com/lingshaohu/archive/2011/12/07/2279904.html VS2010中,ON_WM_NCHITTEST宏编译不过,报错信息如下: error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CMenuBar::* )(CPoi
VS2010遇到_WIN32_WINNT宏定义问题
在xp和win7上都遇到一个诡异的问题,先记下来。 在visual studio 2010编译程序的时候,出现如下的报错: Error C1189: #error :  This file requires _WIN32_WINNT to be #defined at least to 0×0403. Value 0×0501 or higher is recommended.    c:\Pro
C/C++ static使用(基于VS2010)
(一)在C语言中 静态变量永远只能初始化一次,但是可以多次赋值 (1)局部静态变量,存在于全局数据区 example1: #include int function() { static int a = 10; a++; return a; } int main() { for(int nIndex = 0;nIndex<10;nIndex++) { printf("a =
完美解决#define _AFXDLL or do not use /MD[d]
这个问题经常出现在尝试使用Visual Studio 较高版本(2008,2010)编辑较低版本(Visual C++ 6.0)时使用“在静态库中使用MFC”的情况。在·在网上查找方法,无非是“改成在共享DLL中使用MFC”,或者将#include 改成等方法。笔者未尝试过第二种方法,但是第一种倒是确实好用。第二种不推荐,因为如果使用了afx.h中的函数和变量,atlstr.h没有怎么办?
vs2010下backspace键失效解决之道
现在的项目是linux项目,因为熟悉vs,所以工作模式一直是vs下
头文件中无法进行#define宏定义常量
在用MDK5编程时,发现当在头文件中用#define宏定义某常量,然而在源文件中无法引用该头文件的宏定义常量,但是在VS2013中却可以。 同时在网上查找诸多资料后发现是因为编译器的问题,不同的编译器对此规定不同,有的允许在头文件中进行宏定义常量,有的不行(定义后无法使用,编译不报错)。...
MFC Please #define _AFXDLL or do not use /MD的解决方法
Solution Configurations: Debug 解决方案 在VS2010里的解决方案资源管理器中,右击项目选择属性,在常规选项中,将右边项目默认值里的MFC的使用,由 使用标准windows库改为 在共享DLL中使用MFC Solution Configurations: Release解决方案 右击项目选择属性--》Code Generation --》Runtim Libr
使用_CRTDBG_MAP_ALLOC宏与_malloca/_freea不兼容
环境:VC2005  + WTL 8.1   为了定位内存漏洞,在头文件中包含了crtdbg.h,   #if defined(_DEBUG) #define _CRTDBG_MAP_ALLOC #include #include #endif // defined(_DEBUG) 结果造成创建包含有ActiveX的窗口时报错, 问题来自于~CAutoStackPtr这