user-0 提问: 为什么我之前都没听说过stdint.h ， C语言的书上都没讲

回复:
user: user-0
content: 引用 14 楼 z542858367 的回复:[quote=引用 9 楼 zhao4zhong1 的回复:] C:\Program Files\Microsoft Visual Studio 10.0\VC\include\stdint.h /* stdint.h standard header */ #pragma once #ifndef _STDINT #define _STDINT #ifndef RC_INVOKED #include <yvals.h>  /* NB: assumes     byte has 8 bits     long is 32 bits     pointer can convert to and from long long     long long is longest type  */  _C_STD_BEGIN         /* TYPE DEFINITIONS */ typedef signed char int8_t; typedef short int16_t; typedef int int32_t;  typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t;  typedef signed char int_least8_t; typedef short int_least16_t; typedef int int_least32_t;  typedef unsigned char uint_least8_t; typedef unsigned short uint_least16_t; typedef unsigned int uint_least32_t;  typedef char int_fast8_t; typedef int int_fast16_t; typedef int int_fast32_t;  typedef unsigned char uint_fast8_t; typedef unsigned int uint_fast16_t; typedef unsigned int uint_fast32_t;  #ifndef _INTPTR_T_DEFINED  #define _INTPTR_T_DEFINED  #ifdef _WIN64 typedef __int64 intptr_t;  #else /* _WIN64 */ typedef _W64 int intptr_t;  #endif /* _WIN64 */ #endif /* _INTPTR_T_DEFINED */  #ifndef _UINTPTR_T_DEFINED  #define _UINTPTR_T_DEFINED  #ifdef _WIN64 typedef unsigned __int64 uintptr_t;  #else /* _WIN64 */ typedef _W64 unsigned int uintptr_t;  #endif /* _WIN64 */ #endif /* _UINTPTR_T_DEFINED */  typedef _Longlong int64_t; typedef _ULonglong uint64_t;  typedef _Longlong int_least64_t; typedef _ULonglong uint_least64_t;  typedef _Longlong int_fast64_t; typedef _ULonglong uint_fast64_t;  typedef _Longlong intmax_t; typedef _ULonglong uintmax_t;  		/* LIMIT MACROS */ #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 INT_LEAST8_MIN		(-0x7f - _C2) #define INT_LEAST16_MIN		(-0x7fff - _C2) #define INT_LEAST32_MIN		(-0x7fffffff - _C2)  #define INT_LEAST8_MAX		0x7f #define INT_LEAST16_MAX		0x7fff #define INT_LEAST32_MAX		0x7fffffff #define UINT_LEAST8_MAX		0xff #define UINT_LEAST16_MAX	0xffff #define UINT_LEAST32_MAX	0xffffffff  #define INT_FAST8_MIN		(-0x7f - _C2) #define INT_FAST16_MIN		(-0x7fff - _C2) #define INT_FAST32_MIN		(-0x7fffffff - _C2)  #define INT_FAST8_MAX		0x7f #define INT_FAST16_MAX		0x7fff #define INT_FAST32_MAX		0x7fffffff #define UINT_FAST8_MAX		0xff #define UINT_FAST16_MAX		0xffff #define UINT_FAST32_MAX		0xffffffff   #if _INTPTR == 0 || _INTPTR == 1 #define INTPTR_MAX			0x7fffffff #define INTPTR_MIN			(-INTPTR_MAX - _C2) #define UINTPTR_MAX			0xffffffff   #else /* _INTPTR == 2 */ #define INTPTR_MIN			(-_LLONG_MAX - _C2) #define INTPTR_MAX			_LLONG_MAX #define UINTPTR_MAX			_ULLONG_MAX #endif /* _INTPTR */  #define INT8_C(x)	(x) #define INT16_C(x)	(x) #define INT32_C(x)	((x) + (INT32_MAX - INT32_MAX))  #define UINT8_C(x)	(x) #define UINT16_C(x)	(x) #define UINT32_C(x)	((x) + (UINT32_MAX - UINT32_MAX))  #ifdef _WIN64  #define PTRDIFF_MIN		INT64_MIN  #define PTRDIFF_MAX		INT64_MAX #else /* _WIN64 */  #define PTRDIFF_MIN		INT32_MIN  #define PTRDIFF_MAX		INT32_MAX #endif /* _WIN64 */  #define SIG_ATOMIC_MIN	INT32_MIN #define SIG_ATOMIC_MAX	INT32_MAX  #ifndef SIZE_MAX  #ifdef _WIN64   #define SIZE_MAX		UINT64_MAX  #else /* _WIN64 */   #define SIZE_MAX		UINT32_MAX  #endif /* _WIN64 */ #endif /* SIZE_MAX */  #define WCHAR_MIN   0x0000 #define WCHAR_MAX   0xffff  #define WINT_MIN    0x0000 #define WINT_MAX    0xffff   #define INT64_MIN  (-0x7fffffffffffffff - _C2)  #define INT64_MAX  0x7fffffffffffffff  #define UINT64_MAX 0xffffffffffffffffU   #define INT_LEAST64_MIN    (-0x7fffffffffffffff - _C2)  #define INT_LEAST64_MAX    0x7fffffffffffffff  #define UINT_LEAST64_MAX   0xffffffffffffffffU   #define INT_FAST64_MIN     (-0x7fffffffffffffff - _C2)  #define INT_FAST64_MAX     0x7fffffffffffffff  #define UINT_FAST64_MAX    0xffffffffffffffffU   #define INTMAX_MIN     (-0x7fffffffffffffff - _C2)  #define INTMAX_MAX     0x7fffffffffffffff  #define UINTMAX_MAX    0xffffffffffffffffU  #define INT64_C(x)      ((x) + (INT64_MAX - INT64_MAX)) #define UINT64_C(x)     ((x) + (UINT64_MAX - UINT64_MAX)) #define INTMAX_C(x)     INT64_C(x) #define UINTMAX_C(x)    UINT64_C(x) _C_STD_END #endif /* RC_INVOKED */ #endif /* _STDINT */   #if defined(_STD_USING) using _CSTD int8_t; using _CSTD int16_t; using _CSTD int32_t; using _CSTD int64_t;  using _CSTD uint8_t; using _CSTD uint16_t; using _CSTD uint32_t; using _CSTD uint64_t;  using _CSTD int_least8_t; using _CSTD int_least16_t; using _CSTD int_least32_t;  using _CSTD int_least64_t; using _CSTD uint_least8_t; using _CSTD uint_least16_t; using _CSTD uint_least32_t; using _CSTD uint_least64_t;  using _CSTD intmax_t; using _CSTD uintmax_t;  using _CSTD uintptr_t; using _CSTD intptr_t;  using _CSTD int_fast8_t; using _CSTD int_fast16_t; using _CSTD int_fast32_t; using _CSTD int_fast64_t; using _CSTD uint_fast8_t; using _CSTD uint_fast16_t; using _CSTD uint_fast32_t; using _CSTD uint_fast64_t;  #endif /* defined(_STD_USING) */  /*  * Copyright (c) 1992-2009 by P.J. Plauger.  ALL RIGHTS RESERVED.  * Consult your license regarding permissions and restrictions. V5.20:0009 */  看不懂啊，老师[/quote]  就是一个头文件C:\Program Files\Microsoft Visual Studio 10.0\VC\include\stdint.h

user: user-1
content: 引用 9 楼 zhao4zhong1 的回复:C:\Program Files\Microsoft Visual Studio 10.0\VC\include\stdint.h /* stdint.h standard header */ #pragma once #ifndef _STDINT #define _STDINT #ifndef RC_INVOKED #include <yvals.h>  /* NB: assumes     byte has 8 bits     long is 32 bits     pointer can convert to and from long long     long long is longest type  */  _C_STD_BEGIN         /* TYPE DEFINITIONS */ typedef signed char int8_t; typedef short int16_t; typedef int int32_t;  typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t;  typedef signed char int_least8_t; typedef short int_least16_t; typedef int int_least32_t;  typedef unsigned char uint_least8_t; typedef unsigned short uint_least16_t; typedef unsigned int uint_least32_t;  typedef char int_fast8_t; typedef int int_fast16_t; typedef int int_fast32_t;  typedef unsigned char uint_fast8_t; typedef unsigned int uint_fast16_t; typedef unsigned int uint_fast32_t;  #ifndef _INTPTR_T_DEFINED  #define _INTPTR_T_DEFINED  #ifdef _WIN64 typedef __int64 intptr_t;  #else /* _WIN64 */ typedef _W64 int intptr_t;  #endif /* _WIN64 */ #endif /* _INTPTR_T_DEFINED */  #ifndef _UINTPTR_T_DEFINED  #define _UINTPTR_T_DEFINED  #ifdef _WIN64 typedef unsigned __int64 uintptr_t;  #else /* _WIN64 */ typedef _W64 unsigned int uintptr_t;  #endif /* _WIN64 */ #endif /* _UINTPTR_T_DEFINED */  typedef _Longlong int64_t; typedef _ULonglong uint64_t;  typedef _Longlong int_least64_t; typedef _ULonglong uint_least64_t;  typedef _Longlong int_fast64_t; typedef _ULonglong uint_fast64_t;  typedef _Longlong intmax_t; typedef _ULonglong uintmax_t;  		/* LIMIT MACROS */ #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 INT_LEAST8_MIN		(-0x7f - _C2) #define INT_LEAST16_MIN		(-0x7fff - _C2) #define INT_LEAST32_MIN		(-0x7fffffff - _C2)  #define INT_LEAST8_MAX		0x7f #define INT_LEAST16_MAX		0x7fff #define INT_LEAST32_MAX		0x7fffffff #define UINT_LEAST8_MAX		0xff #define UINT_LEAST16_MAX	0xffff #define UINT_LEAST32_MAX	0xffffffff  #define INT_FAST8_MIN		(-0x7f - _C2) #define INT_FAST16_MIN		(-0x7fff - _C2) #define INT_FAST32_MIN		(-0x7fffffff - _C2)  #define INT_FAST8_MAX		0x7f #define INT_FAST16_MAX		0x7fff #define INT_FAST32_MAX		0x7fffffff #define UINT_FAST8_MAX		0xff #define UINT_FAST16_MAX		0xffff #define UINT_FAST32_MAX		0xffffffff   #if _INTPTR == 0 || _INTPTR == 1 #define INTPTR_MAX			0x7fffffff #define INTPTR_MIN			(-INTPTR_MAX - _C2) #define UINTPTR_MAX			0xffffffff   #else /* _INTPTR == 2 */ #define INTPTR_MIN			(-_LLONG_MAX - _C2) #define INTPTR_MAX			_LLONG_MAX #define UINTPTR_MAX			_ULLONG_MAX #endif /* _INTPTR */  #define INT8_C(x)	(x) #define INT16_C(x)	(x) #define INT32_C(x)	((x) + (INT32_MAX - INT32_MAX))  #define UINT8_C(x)	(x) #define UINT16_C(x)	(x) #define UINT32_C(x)	((x) + (UINT32_MAX - UINT32_MAX))  #ifdef _WIN64  #define PTRDIFF_MIN		INT64_MIN  #define PTRDIFF_MAX		INT64_MAX #else /* _WIN64 */  #define PTRDIFF_MIN		INT32_MIN  #define PTRDIFF_MAX		INT32_MAX #endif /* _WIN64 */  #define SIG_ATOMIC_MIN	INT32_MIN #define SIG_ATOMIC_MAX	INT32_MAX  #ifndef SIZE_MAX  #ifdef _WIN64   #define SIZE_MAX		UINT64_MAX  #else /* _WIN64 */   #define SIZE_MAX		UINT32_MAX  #endif /* _WIN64 */ #endif /* SIZE_MAX */  #define WCHAR_MIN   0x0000 #define WCHAR_MAX   0xffff  #define WINT_MIN    0x0000 #define WINT_MAX    0xffff   #define INT64_MIN  (-0x7fffffffffffffff - _C2)  #define INT64_MAX  0x7fffffffffffffff  #define UINT64_MAX 0xffffffffffffffffU   #define INT_LEAST64_MIN    (-0x7fffffffffffffff - _C2)  #define INT_LEAST64_MAX    0x7fffffffffffffff  #define UINT_LEAST64_MAX   0xffffffffffffffffU   #define INT_FAST64_MIN     (-0x7fffffffffffffff - _C2)  #define INT_FAST64_MAX     0x7fffffffffffffff  #define UINT_FAST64_MAX    0xffffffffffffffffU   #define INTMAX_MIN     (-0x7fffffffffffffff - _C2)  #define INTMAX_MAX     0x7fffffffffffffff  #define UINTMAX_MAX    0xffffffffffffffffU  #define INT64_C(x)      ((x) + (INT64_MAX - INT64_MAX)) #define UINT64_C(x)     ((x) + (UINT64_MAX - UINT64_MAX)) #define INTMAX_C(x)     INT64_C(x) #define UINTMAX_C(x)    UINT64_C(x) _C_STD_END #endif /* RC_INVOKED */ #endif /* _STDINT */   #if defined(_STD_USING) using _CSTD int8_t; using _CSTD int16_t; using _CSTD int32_t; using _CSTD int64_t;  using _CSTD uint8_t; using _CSTD uint16_t; using _CSTD uint32_t; using _CSTD uint64_t;  using _CSTD int_least8_t; using _CSTD int_least16_t; using _CSTD int_least32_t;  using _CSTD int_least64_t; using _CSTD uint_least8_t; using _CSTD uint_least16_t; using _CSTD uint_least32_t; using _CSTD uint_least64_t;  using _CSTD intmax_t; using _CSTD uintmax_t;  using _CSTD uintptr_t; using _CSTD intptr_t;  using _CSTD int_fast8_t; using _CSTD int_fast16_t; using _CSTD int_fast32_t; using _CSTD int_fast64_t; using _CSTD uint_fast8_t; using _CSTD uint_fast16_t; using _CSTD uint_fast32_t; using _CSTD uint_fast64_t;  #endif /* defined(_STD_USING) */  /*  * Copyright (c) 1992-2009 by P.J. Plauger.  ALL RIGHTS RESERVED.  * Consult your license regarding permissions and restrictions. V5.20:0009 */  看不懂啊，老师

user: user-2
content: 引用 12 楼 inurlcn 的回复:[quote=引用 11 楼 jha334201553 的回复:] 没听过再正常 不过了，你看include文件夹里面几百个.h，你听过几个？  C库就那几个头文件吧，哪有的几百个？[/quote]标准的当然也就20多个，当时如果真的做开发应用的话还是会加很多系统相关的头呀

user: user-0
content: 引用 11 楼 jha334201553 的回复:没听过再正常 不过了，你看include文件夹里面几百个.h，你听过几个？  C库就那几个头文件吧，哪有的几百个？

user: user-2
content: 没听过再正常 不过了，你看include文件夹里面几百个.h，你听过几个？

user: user-3
content: 微软对 c99 支持拖拖拉拉的, 直到 vc 2010 才开始有个这个标准头文件.

user: user-4
content: C:\Program Files\Microsoft Visual Studio 10.0\VC\include\stdint.h /* stdint.h standard header */ #pragma once #ifndef _STDINT #define _STDINT #ifndef RC_INVOKED #include <yvals.h>  /* NB: assumes     byte has 8 bits     long is 32 bits     pointer can convert to and from long long     long long is longest type  */  _C_STD_BEGIN         /* TYPE DEFINITIONS */ typedef signed char int8_t; typedef short int16_t; typedef int int32_t;  typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t;  typedef signed char int_least8_t; typedef short int_least16_t; typedef int int_least32_t;  typedef unsigned char uint_least8_t; typedef unsigned short uint_least16_t; typedef unsigned int uint_least32_t;  typedef char int_fast8_t; typedef int int_fast16_t; typedef int int_fast32_t;  typedef unsigned char uint_fast8_t; typedef unsigned int uint_fast16_t; typedef unsigned int uint_fast32_t;  #ifndef _INTPTR_T_DEFINED  #define _INTPTR_T_DEFINED  #ifdef _WIN64 typedef __int64 intptr_t;  #else /* _WIN64 */ typedef _W64 int intptr_t;  #endif /* _WIN64 */ #endif /* _INTPTR_T_DEFINED */  #ifndef _UINTPTR_T_DEFINED  #define _UINTPTR_T_DEFINED  #ifdef _WIN64 typedef unsigned __int64 uintptr_t;  #else /* _WIN64 */ typedef _W64 unsigned int uintptr_t;  #endif /* _WIN64 */ #endif /* _UINTPTR_T_DEFINED */  typedef _Longlong int64_t; typedef _ULonglong uint64_t;  typedef _Longlong int_least64_t; typedef _ULonglong uint_least64_t;  typedef _Longlong int_fast64_t; typedef _ULonglong uint_fast64_t;  typedef _Longlong intmax_t; typedef _ULonglong uintmax_t;  		/* LIMIT MACROS */ #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 INT_LEAST8_MIN		(-0x7f - _C2) #define INT_LEAST16_MIN		(-0x7fff - _C2) #define INT_LEAST32_MIN		(-0x7fffffff - _C2)  #define INT_LEAST8_MAX		0x7f #define INT_LEAST16_MAX		0x7fff #define INT_LEAST32_MAX		0x7fffffff #define UINT_LEAST8_MAX		0xff #define UINT_LEAST16_MAX	0xffff #define UINT_LEAST32_MAX	0xffffffff  #define INT_FAST8_MIN		(-0x7f - _C2) #define INT_FAST16_MIN		(-0x7fff - _C2) #define INT_FAST32_MIN		(-0x7fffffff - _C2)  #define INT_FAST8_MAX		0x7f #define INT_FAST16_MAX		0x7fff #define INT_FAST32_MAX		0x7fffffff #define UINT_FAST8_MAX		0xff #define UINT_FAST16_MAX		0xffff #define UINT_FAST32_MAX		0xffffffff   #if _INTPTR == 0 || _INTPTR == 1 #define INTPTR_MAX			0x7fffffff #define INTPTR_MIN			(-INTPTR_MAX - _C2) #define UINTPTR_MAX			0xffffffff   #else /* _INTPTR == 2 */ #define INTPTR_MIN			(-_LLONG_MAX - _C2) #define INTPTR_MAX			_LLONG_MAX #define UINTPTR_MAX			_ULLONG_MAX #endif /* _INTPTR */  #define INT8_C(x)	(x) #define INT16_C(x)	(x) #define INT32_C(x)	((x) + (INT32_MAX - INT32_MAX))  #define UINT8_C(x)	(x) #define UINT16_C(x)	(x) #define UINT32_C(x)	((x) + (UINT32_MAX - UINT32_MAX))  #ifdef _WIN64  #define PTRDIFF_MIN		INT64_MIN  #define PTRDIFF_MAX		INT64_MAX #else /* _WIN64 */  #define PTRDIFF_MIN		INT32_MIN  #define PTRDIFF_MAX		INT32_MAX #endif /* _WIN64 */  #define SIG_ATOMIC_MIN	INT32_MIN #define SIG_ATOMIC_MAX	INT32_MAX  #ifndef SIZE_MAX  #ifdef _WIN64   #define SIZE_MAX		UINT64_MAX  #else /* _WIN64 */   #define SIZE_MAX		UINT32_MAX  #endif /* _WIN64 */ #endif /* SIZE_MAX */  #define WCHAR_MIN   0x0000 #define WCHAR_MAX   0xffff  #define WINT_MIN    0x0000 #define WINT_MAX    0xffff   #define INT64_MIN  (-0x7fffffffffffffff - _C2)  #define INT64_MAX  0x7fffffffffffffff  #define UINT64_MAX 0xffffffffffffffffU   #define INT_LEAST64_MIN    (-0x7fffffffffffffff - _C2)  #define INT_LEAST64_MAX    0x7fffffffffffffff  #define UINT_LEAST64_MAX   0xffffffffffffffffU   #define INT_FAST64_MIN     (-0x7fffffffffffffff - _C2)  #define INT_FAST64_MAX     0x7fffffffffffffff  #define UINT_FAST64_MAX    0xffffffffffffffffU   #define INTMAX_MIN     (-0x7fffffffffffffff - _C2)  #define INTMAX_MAX     0x7fffffffffffffff  #define UINTMAX_MAX    0xffffffffffffffffU  #define INT64_C(x)      ((x) + (INT64_MAX - INT64_MAX)) #define UINT64_C(x)     ((x) + (UINT64_MAX - UINT64_MAX)) #define INTMAX_C(x)     INT64_C(x) #define UINTMAX_C(x)    UINT64_C(x) _C_STD_END #endif /* RC_INVOKED */ #endif /* _STDINT */   #if defined(_STD_USING) using _CSTD int8_t; using _CSTD int16_t; using _CSTD int32_t; using _CSTD int64_t;  using _CSTD uint8_t; using _CSTD uint16_t; using _CSTD uint32_t; using _CSTD uint64_t;  using _CSTD int_least8_t; using _CSTD int_least16_t; using _CSTD int_least32_t;  using _CSTD int_least64_t; using _CSTD uint_least8_t; using _CSTD uint_least16_t; using _CSTD uint_least32_t; using _CSTD uint_least64_t;  using _CSTD intmax_t; using _CSTD uintmax_t;  using _CSTD uintptr_t; using _CSTD intptr_t;  using _CSTD int_fast8_t; using _CSTD int_fast16_t; using _CSTD int_fast32_t; using _CSTD int_fast64_t; using _CSTD uint_fast8_t; using _CSTD uint_fast16_t; using _CSTD uint_fast32_t; using _CSTD uint_fast64_t;  #endif /* defined(_STD_USING) */  /*  * Copyright (c) 1992-2009 by P.J. Plauger.  ALL RIGHTS RESERVED.  * Consult your license regarding permissions and restrictions. V5.20:0009 */

user: user-5
content: 引用 6 楼 inurlcn 的回复:[quote=引用 2 楼 mujiok2003 的回复:] 1.stdint.h引入比较晚(c99) 2.教科书不可能面面俱到。  关于C语言的知识，我现在只看MSDN里面关于RTL的章节， 可惜这个上面也没提到stdint.h[/quote]  http://www.cplusplus.com/reference/cstdint/

user: user-0
content: up

user: user-0
content: 引用 2 楼 mujiok2003 的回复:1.stdint.h引入比较晚(c99) 2.教科书不可能面面俱到。  关于C语言的知识，我现在只看MSDN里面关于RTL的章节， 可惜这个上面也没提到stdint.h

user: user-0
content: 引用 3 楼 user-7 的回复:没听说很正常！可能是你看到书上没有提到或者涉及到这些！  多看点书！多接触点这方面相关的知识面就好了！  关于C语言的知识，我现在只看MSDN里面关于RTL的章节， 可惜这个上面也没提到stdint.h

user: user-6
content: 我也没听过

user: user-7
content: 没听说很正常！可能是你看到书上没有提到或者涉及到这些！  多看点书！多接触点这方面相关的知识面就好了！

user: user-5
content: 1.stdint.h引入比较晚(c99) 2.教科书不可能面面俱到。

user: user-0
content: up