假设我希望编写一个 C 程序(C99 或 C2011),我希望它是完全可移植的,并且不依赖于特定的体系结构。
看来我想彻底摆脱旧的整数类型 ( int
, long
, short
) 和朋友,只 int8_t
使用,uint8_t
等int32_t
(也许也使用least
andfast
版本)。
那么返回类型是main
什么?还是我们必须打击int
?是标准要求的int
吗?
GCC-4.2 允许我写
#include <stdint.h>
#include <stdio.h>
int32_t main() {
printf("Hello\n");
return 0;
}
但我不能使用uint32_t
,甚至int8_t
因为那时我得到了
hello.c:3: warning: return type of ‘main’ is not ‘int’
毫无疑问,这是因为 typedef。似乎这是我们不得不使用未指定大小类型的一种情况,因为它不是真正可移植的,除非我们将返回类型留给目标架构。这种解释正确吗?在代码库中有“只有一个”普通的旧代码似乎很奇怪,int
但我很高兴能够务实。