Может ли размер структуры измениться после компиляции? - PullRequest
4 голосов
/ 09 апреля 2010

предположим, что у вас есть следующая структура:

#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 ]

5 голосов
/ 09 апреля 2010

Исправлено и не изменится после компиляции. На 64-битной машине он все еще будет работать как 32-битное приложение.

2 голосов
/ 09 апреля 2010

Они не изменятся, если Чак Норрис не скажет так.

...