编译后结构的大小可以改变吗?

标签 c sizeof

假设您有以下结构:

#include <windows.h> // BOOL is here.
#include <stdio.h>

typedef struct {
    BOOL someBool;
    char someCharArray[100];
    int someIntValue;
    BOOL moreBools, anotherOne, yetAgain;
    char someOthercharArray[23];
    int otherInt;
} Test;

int main(void) {
    printf("Structure size: %d, BOOL size: %d.\n", sizeof(Test), sizeof(BOOL));
}

当我在我的机器(32 位操作系统)中编译这段代码时,输​​出如下:

Structure size: 148, BOOL size: 4.

我想知道,一旦编译,这些值是否会根据运行程序的机器而改变。例如:如果我在 64 位机器上运行这个程序,输出是否相同?或者一旦它被编译它就永远是一样的?

非常感谢,如果这个问题的答案很明显,请原谅我......

最佳答案

它是固定的,一旦编译就不会改变。在 64 位机器上,它仍将作为 32 位应用程序运行。

关于编译后结构的大小可以改变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607391/

相关文章:

c - 为什么 -2147483648 可以放入 int 时自动提升为 long?

c - 我想用 ASCII 码更新我的 C 代码

c - 全局初始化指向 char 指针的指针

c - 如何在c中将单个字符添加到字符串值

c++ - 作为参数传递的数组的 sizeof 的奇怪行为

c++ - 数组大小元函数 - 它在某处 boost 吗?

c - 寻找第二高的数字

c - 为什么我在使用 fgets 时必须输入 EOF 3 次?

c - 为什么直接将值传递给 sizeof 运算符时,数据类型的大小会不同?

c - sizeof() 语句是在编译时还是运行时评估?