2010-04-09 49 views
4

假设你有以下结构:编译后结构的大小是否会发生变化?

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

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

回答

5

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

+1

Yeap,这被称为32位仿真模式。要么你有它,否则你的本地代码程序将无法运行。 – sharptooth 2010-04-09 12:43:56

+0

非常感谢,我刚刚开始用C语言编写代码,不知道这是怎么回事。 – 2010-04-09 12:52:20

2

除非Chuck Norris这么说,否则他们不会改变。

相关问题