stdint.h
和cstdint
之间的区别是什么
它们都在MSVC (Visual Studio2010)和gcc-4.5.1中可用。此外,两者都定义了intX_t
/uintX_t
类型(其中X
是该类型的字节大小)。
stdint.h
定义了没有任何名称空间的每种类型,cstdint
类型位于std
名称空间中。
std
命名空间中包含或不包含已定义的类型?这两个标头之间有什么不同?cstdint
没有文件扩展名并使用c
前缀,stdint.h
使用.h
扩展名。
c
前缀表明这是一个C库?cstdint
中没有文件扩展名是有原因的
发布于 2012-11-30 18:03:09
包含cstdint
将符号名称导入到标准命名空间中,也可能导入到全局命名空间中。
包含stdint.h
会导入全局名称空间中的符号名称,可能也会导入标准名称空间中的符号名称。
C++标准库中也提供了C标准库的功能,并且作为通用命名约定,它们在C标准库中的相应名称前面加上一个c。
在C++中,您应该使用:
#include <cstdint>
并完全限定与std::
一起使用的符号名称
在C中,你应该使用:
#include <stdint.h>
声明:附录D(标准)兼容性特性描述:
D.6 C标准库头文件
1为了与C标准库和C Unicode TR兼容,C++标准库提供了25个C标头,如表151所示。
其中包括:
<assert.h> <float.h> <math.h> <stddef.h> <tgmath.h>
<complex.h> <inttypes.h> <setjmp.h> <stdio.h> <time.h>
<ctype.h> <iso646.h> <signal.h> <stdint.h> <uchar.h>
<errno.h> <limits.h> <stdarg.h> <stdlib.h> <wchar.h>
<fenv.h> <locale.h> <stdbool.h> <string.h> <wctype.h>
并且进一步,
2使用每个C标头,每个标头都有一个格式为using
name.h
**,的名称,就好像由相应的**cname header
放置在标准库命名空间中的每个名称都放在全局命名空间范围内一样。未指定这些名称是首先在命名空间标准的命名空间作用域(3.3.6)内声明还是定义,然后通过显式-声明(7.3.3)注入到全局命名空间作用域中。
3示例:头<cstdlib>
肯定在名称空间std中提供了它的声明和定义。它还可以在全局名称空间内提供这些名称。头<stdlib.h>
在全局名称空间中肯定提供了相同的声明和定义,与C标准中的声明和定义非常相似。它还可以在命名空间std中提供这些名称。-end示例
https://stackoverflow.com/questions/13642827
复制相似问题