J'ai ce code, que je ne comprends pas pourquoi il ne compile pas:accès membres de la structure avec sizeof
typedef struct
{
uint32_t serial_number;
uint32_t ieee_address[6];
} FACTORY_CONFIG;
...
// Unlock flash (only the portion we write on)
error = FLASHD_Unlock (writeaddress, writeaddress + sizeof (FACTORY_CONFIG.serial_number), 0, 0);
Quand je cours, je reçois cette erreur:
Error[Pe018]: expected a ")"
Quand je change le
FACTORY_CONFIG.serial_number
à
FACTORY_CONFIG
, il compile et tout fonctionne. Je ne suis pas sûr, puis-je vérifier la taille d'un type à l'intérieur d'une structure?
Comment ça marche, quel est le zéro? – stdcall
Cela fonctionne car 'sizeof' peut calculer la taille des objets en inférant leurs types au moment de la compilation. Étant donné un pointeur f sur FOO, f-> member est un membre et le pointeur NULL (0) peut également être utilisé pour éviter de déclarer un pointeur temporaire. –
-1 Il existe une macro 'offsetoff' dans la norme, exactement dans ce but. Cela prend en compte tous les problèmes de remplissage et est portable. Ne pas enseigner aux gens un tel hackery. –