Comment puis-je utiliser “sizeof” dans une macro préprocesseur?

Est-il possible d'utiliser un sizeof dans une macro préprocesseur?

Par exemple, il y a eu une tonne de situations au cours des années où j'ai voulu faire quelque chose comme:

#if sizeof(someThing) != PAGE_SIZE
#error Data structure doesn't match page size
#endif

La chose exacte que je suis ici de vérification est complètement constitué le point est, j'ai souvent envie de mettre dans ces types de (de la taille ou de l'alignement) des contrôles de compilation afin de se prémunir contre quelqu'un de la modification d'une structure de données qui pourrait perdre l'alignement ou re-taille, les choses qui serait casser.

Inutile de dire que je ne semble pas être en mesure d'utiliser un sizeof de la manière décrite ci-dessus.

  • C'est la raison exacte de construire des systèmes existent.
  • C'est la raison exacte #erreur directives devraient toujours être entre guillemets doubles (indéterminé de caractères constante en raison de "ne pas").
InformationsquelleAutor Brad | 2010-11-02