c - 什么定义了类型的大小?

标签 c gcc sizeof

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/

相关文章:

c++ - 从调用堆栈中获取函数名

c - secret 服务器协议(protocol)保持软件免费

c - (-1 >= sizeof(buffer)) 怎么可能是真的?程序无法获得正确的比较结果

mysql - C 中的命名空间冲突

c++ - 将 g++ 4.8 链接到 libstdc++

C 编程好不好?

c++ - 嵌套循环可以在单个循环上抓取吗?

c - scanf("%number[^\n], array[N].struct) 的字符串长度

c++ - 在 C++ 中查找字符数组的长度

c++ - 为什么 sizeof(int) 与 sizeof(int*) 不同?