2010-04-09 2 views
4

supposons que vous avez la structure suivante:La taille d'une structure peut-elle changer après la compilation?

#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)); 
} 

Quand je compile ce morceau de code dans ma machine la sortie est la suivante (OS 32 bits):

Structure size: 148, BOOL size: 4. 

Je voudrais savoir Si, une fois compilé, ces valeurs peuvent changer en fonction de la machine qui exécute le programme. Par exemple: si j'ai exécuté ce programme dans une machine 64 bits, la sortie serait-elle la même? Ou une fois qu'il est compilé ça sera toujours pareil?

Merci beaucoup, et pardonnez-moi si la réponse à cette question est évidente ...

Répondre

5

Il est fixe et ne changera pas une fois compilé. Sur une machine 64 bits, il fonctionnera toujours en tant qu'application 32 bits.

+1

Soit vous l'avez ou votre programme de code natif ne fonctionnera pas. – sharptooth

+0

Merci beaucoup, je commence juste à coder en C et je ne savais pas comment cela serait. –

2

Ils ne changeront pas, sauf si Chuck Norris le dit. Yeap, c'est ce que l'on appelle le mode d'émulation 32 bits.

Questions connexes