2010-07-14 10 views
2

Y a-t-il une signification particulière à la définition de données constantes dans une structure, comme indiqué. Ceci provient d'une bibliothèque tierce.Définition de constantes à l'intérieur d'une structure

typedef struct    
{   
    IntVB abc_number;   
    #define ABC_A 0x01  
    #define ADBC_E 0x02  
    IntVB asset;    
} StructA; 
+7

Vous ne devriez pas utiliser de macros pour cela en C++. – sbi

+0

Ce qu'ils devraient utiliser, ce sont des définitions const, qui donneront un accès à l'exécution aux données, seront typées et auront une portée. –

+0

@sbi: Si vous regardez le typedef, cela me suggère que si l'OP est en C++, l'en-tête de tiers provient de C. – Puppy

Répondre

6

Pas vraiment. Ils fournissent probablement une meilleure signification au programmeur à cet endroit du code. Cela signifie que ces constantes sont probablement liées aux éléments de ce conteneur struct ou au comportement de la structure.

+0

Et dans le cas ci-dessus, il n'est même pas possible d'accéder à ces constantes lors de l'exécution, car elles ne sont que # # define. Je ne sais pas quel sens ont-ils ici. – PeterK

1

Non, ils pourraient être appelés sans aucune portée

2

d'accord avec @Luca Matteis. Ils sont probablement définis ici parce qu'ils sont pertinents à ce stade du code. Le compilateur ne les traite pas spécialement. En particulier, ils pourraient être définis juste avant cette structure et fonctionner de la même manière. Il n'y a aucune signification pour eux d'être à l'intérieur.

Cependant, il y a une chose à noter, ils ne sont valides que après ils sont définis. Donc, ils ne peuvent pas être utilisés plus tôt dans le fichier. Cela pourrait être significatif. Par exemple, ils pourraient être définis différemment avant ce point. (C'est une mauvaise idée de faire cela, mais c'est possible.)

+0

oui vrai mais je ne les vois pas rediffusées n'importe où dans le reste du fichier – ckv