未能得到详细回答我的问题在这里 。 我想我会从不同的角度解决它。
会有人能够解释使用什么选择标准确定的基本类型C99的固定宽度整数类型:
[u]int_fast[n]_t
[u]int_least[n]_t
[u]int[n]_t
对于给定的处理器,如果“长”和“INT”具有相同的大小(的sizeof(int)的==的sizeof(长)),那么为什么在“INT”,或反之亦然被用于将“长”。
未能得到详细回答我的问题在这里 。 我想我会从不同的角度解决它。
会有人能够解释使用什么选择标准确定的基本类型C99的固定宽度整数类型:
[u]int_fast[n]_t
[u]int_least[n]_t
[u]int[n]_t
对于给定的处理器,如果“长”和“INT”具有相同的大小(的sizeof(int)的==的sizeof(长)),那么为什么在“INT”,或反之亦然被用于将“长”。
的作者的兴致<stdint.h>
。
鉴于int
和long
是相同的大小(假设他们有相同的表示等特点),它应该在所有无关紧要其中哪些是用来定义[u]int_{,_fast,_least}32_t
,只要作为一种或多种类型满足标准的要求。
嗯,这并不完全正确; 它可以使在某些情况下的差异。 int
和long
,即使它们是相同的大小,仍然是独特的和不兼容的类型。 例如,假定int32_t
是typedef
ED或者作为int
或作为long
,下面的程序:
#include <stdint.h>
#include <stddef.h>
int main(void) {
int32_t *p32 = NULL;
int *ip = p32;
long *lp = p32;
return 0;
}
违反了约束,并且需要诊断或者在申报ip
或上的声明lp
,这取决于如何int32_t
定义。 但是你应该避免反正写这样的代码。