ISO C标准指出:
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Run Code Online (Sandbox Code Playgroud)
我在BIT Linux mint(19.1)上使用GCC-8,大小long int为8。
我正在使用使用GCC 7的应用程序,并且编译器是64位的。的大小long int为4。编译器或操作系统是否定义a的大小long int?
编译器会进行所有操作。操作系统只运行生成的二进制文件。
话虽这么说,编译器通常会制作一个操作系统可以使用的可执行文件,因此这里存在一些相互作用。由于只要大小一致int就不会影响大小之类的事情,因此您会发现变化。
换句话说,如果内核long int由于编译方式而期望为8个字节,那么您将希望以这种方式进行编译以匹配,否则编译后的代码将不匹配,并且所有共享库都将无法工作。