2010-04-25 8 views
0

Je veux rendre certaines constantes statiques globalement visibles. Je suis assez familier avec C++. Le problème est que ces constantes doivent être alignées sur une limite exotique. Dois-je spécifier l'alignement dans la déclaration externe? J'utilise GCC4.5alignement des constantes externes (gcc)

dans le fichier * .cpp

static const constant_t constant __attribute__((aligned(64))) = {blah,blah,blah}; 

dans le fichier * .h

//Which one is correct? 
extern const constant_t constant; 
extern const constant_t constant __attribute__((aligned(64))); 

Répondre

3

D'abord, il vous semble que vous essayez de le déclarer statique dans la Fichier C, qui est l'ancienne façon de dire le lien interne (fichier). Ceci est incompatible avec votre objectif de le rendre global. Étant donné que la statique est supprimée, vous ne devriez avoir besoin que de l'attribut dans le fichier C: La déclaration externe dit effectivement "Je veux utiliser ce nom, quand vous trouvez enfin son adresse, remplacez-la ici". En d'autres termes, une fois l'adresse attribuée au point de définition dans le fichier C, votre extern pointera symboliquement sur cette même adresse.