les constantes globales sans utiliser #define
Ok, je suis à la recherche de définir un ensemble d'adresses de la mémoire comme des constantes dans une .h de fichier qui est utilisé par un tas de .c fichiers (nous sommes en C, pas en C++). Je veux être en mesure de voir les nom de la variable au lieu de simplement voir l'adresse hexadécimale dans le débogueur... si je veux convertir le #définit actuellement j'ai en constantes qui sont de portée mondiale. Le problème est que si je les définir comme ceci:
const short int SOME_ADDRESS = 0x0010
puis-je obtenir le redoutable "plusieurs déclarations" erreur depuis que j'ai plusieurs .c fichiers à l'aide de cette même .h. Je voudrais utiliser un enum, mais qui ne fonctionnera pas, car il est par défaut de type entier (16 bits sur mon système... et j'ai besoin d'avoir plus de contrôle sur le type).
J'ai pensé à mettre toutes les adresses dans une struct... mais je n'ai aucun moyen (que je connais) de fixer les valeurs par défaut de l'instance de la structure dans le fichier d'en-tête (je ne veux pas présumer qu'un particulier .c fichier utilise la structure et le remplit d'ailleurs.. je voudrais vraiment avoir les constantes définies dans la .h fichier)
Il semblait si simple, quand j'ai commencé, mais je ne vois pas une bonne façon de définir à l'échelle mondiale disponibles à court int constant dans un fichier d'en-tête... quelqu'un connais un moyen de faire cela?
merci!
OriginalL'auteur Kira Smootly | 2012-03-12
Vous devez vous connecter pour publier un commentaire.
Déclarer les constantes dans le fichier d'en-tête à l'aide de
extern
:en tout, mais un seul,
.c
fichier de fournir la définition:Non, il n'y a rien à être appelée pour initialiser les constantes et la définition sera présent avant tout il tente de les utiliser. Juste s'assurer que le
.o
(ou.obj
) fichier de la.c
fichier où les constantes sont définies dans le cadre de la finale de la binaire.ça fonctionne, merci!!!
OriginalL'auteur hmjd
Si vous êtes à la compilation avec gcc, vous pouvez ajouter le
-ggdb3
interrupteur, ce qui fera dire à gcc pour enregistrer la macro de l'information (c'est à dire#define
s), de sorte qu'ils peuvent être utilisés à l'intérieur de gdb.OriginalL'auteur Nathan Fellman