Ecriture de structure dans un fichier

[Résolu]
Signaler
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
-
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
-
Bonjour,



je m'interroge sur pourquoi on ne peut pas faire quelque chose comme ca ?



SYSTEMTIME s;

GetLocalTime(&s);

WriteFile(hFile, s ,sizeof(SYSTEMTIME) , &octetsEcrits,NULL))





c'est parce que le compilo ne peut pas dire si les octets de la
structure SYSTEMTIME seront contigus ? ou bien y a-t-il une autre
raison ?

2 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
La question est bien pourquoi il faut '&s' en param et non 's' ?

's' est défini par le compilo par exemple en '[esp+16]', offset fixe sur stack, on peut donc accéder à ses membres par un offset ajouté à ce #define, exemple s.wMonth sera [esp+16+2].
En cas de passage à une fonction cette adresse se trouverait invalide car on aura déjà PUSHé 3 params:
en pseudo code:
push NULL
push &octetsEcrits
push sizeof(SYSTEMTIME)

s serait donc erroné de 12 octets, voila pourquoi le C introduit l'opérateur '&' qui indique l'adresse réelle à donner en param.

ciao...
BruNews, MVP VC++
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
oui, forcément ... :)



Merci bien de ta réponse