ISO C 标准说:
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
我在 BIT Linux mint (19.1) 上使用 GCC-8,long int
的大小是 8
。
我正在使用一个使用 GCC 7 且编译器为 64 位的应用程序。
long int
的大小为 4
。
编译器或操作系统是否定义了 long int
的大小?
最佳答案
编译器做主。操作系统只运行生成的二进制文件。
也就是说,编译器通常会生成操作系统可以使用的可执行文件,因此这里存在一些相互作用。由于 int
的大小之类的东西并不重要只要它们一致,您就会看到变化。
换句话说,如果内核希望 long int
是 8 个字节,因为它是如何编译的,那么您将希望以这种方式编译以匹配,否则编译后的代码将不匹配并且所有共享库都不起作用。
关于c - 什么定义了类型的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56156513/