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

时间:2010-04-09 12:34:43

标签: 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位机器上运行该程序,输出是否相同?或者一旦它被编译,它将永远是相同的?

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

除非查克诺里斯这样说,否则他们不会改变。