stdint.h:
#define INT8_MIN (-0x7f - _C2)
#define INT16_MIN (-0x7fff - _C2)
#define INT32_MIN (-0x7fffffff - _C2)
#define INT8_MAX 0x7f
#define INT16_MAX 0x7fff
#define INT32_MAX 0x7fffffff
#define UINT8_MAX 0xff
#define UINT16_MAX 0xffff
#define UINT32_MAX 0xffffffff
#define INT64_MIN (-0x7fffffffffffffff - _C2)
#define INT64_MAX 0x7fffffffffffffff
#define UINT64_MAX 0xffffffffffffffffU
intsafe.h:
#define INT8_MIN (-127i8 - 1)
#define INT16_MIN (-32767i16 - 1)
#define INT32_MIN (-2147483647i32 - 1)
#define INT8_MAX 127i8
#define INT16_MAX 32767i16
#define INT32_MAX 2147483647i32
#define UINT8_MAX 0xffui8
#define UINT16_MAX 0xffffui16
#define UINT32_MAX 0xffffffffui32
#define INT64_MIN (-9223372036854775807i64 - 1)
#define INT64_MAX 9223372036854775807i64
#define UINT64_MAX 0xffffffffffffffffui64
编译,stdint.h和intsafe.h有定义冲突,如下,为输出信息:
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(72): warning C4005: “INT8_MIN”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(144) : 参见“INT8_MIN”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(73): warning C4005: “INT16_MIN”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(146) : 参见“INT16_MIN”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(74): warning C4005: “INT32_MIN”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(148) : 参见“INT32_MIN”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(76): warning C4005: “INT8_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(167) : 参见“INT8_MAX”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(77): warning C4005: “INT16_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(171) : 参见“INT16_MAX”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(78): warning C4005: “INT32_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(176) : 参见“INT32_MAX”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(79): warning C4005: “UINT8_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(168) : 参见“UINT8_MAX”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(80): warning C4005: “UINT16_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(173) : 参见“UINT16_MAX”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(81): warning C4005: “UINT32_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(178) : 参见“UINT32_MAX”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(149): warning C4005: “INT64_MIN”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(152) : 参见“INT64_MIN”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(150): warning C4005: “INT64_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(184) : 参见“INT64_MAX”的前一个定义
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(151): warning C4005: “UINT64_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(189) : 参见“UINT64_MAX”的前一个定义
我一是担心这两个定义不一样,二是不想看到这些重定义,但是呢又怕删掉出问题,大神们怎么办啊?哎呀好纠结
就是类似这种形式的,这种宏就是为了防止重复定义
在两个.h文件中加上 #ifndef XXX_H
#define XXX_H 最后再加上#endif
XXX就是这个文件名的大写
已解决,我贴出来了,在调用到这两个冲突系统头文件的那个头文件里加上去掉警告就可以了
#ifdef _MSC_VER
#pragma warning (push)
#pragma warning (disable : 4005)
#include
#include
#pragma warning (pop)
#endif
#ifdef _MSC_VER
#pragma warning (push)
#pragma warning (disable : 4005)
#include
#include
#pragma warning (pop)
#endif
提示#include有问题的,需要包含什么东西吗?
在stdafx.h文件中 找到#pragma once 在这一行的下面加入两行代码 #define _INTSAFE_H_INCLUDE_ #include<stdint.h>