Comment faire de la constante globale (travail sur plusieurs fichiers) dans un programme C?

J'ai un C ANSI programme composé de deux fichiers. Le premier fichier contient les main() de la fonction, et le deuxième fichier contient d'autres fonctions que le premier fichier d'appels. Avant la main() définition de fonction, j'ai placé le code suivant:

#define PI 3.14159265358979323846

mais le 2ème fichier ne vois pas cette variable. Le premier fichier le voit bien. Ensuite, j'ai placé cette même ligne dans le deuxième fichier (tout en le gardant dans le premier fichier comme ci-dessus), avant que les définitions de fonction, mais encore dans le second fichier, ne pas le voir. Les choses toujours compile bien, mais lors du suivi de la variable PI dans gdb, il montre "No symbol "PI" in current context."

Comment faire de la PI une constante globale visible dans tous les fichiers compilés dans l'application?

MODIFIER /MISE À JOUR:

En fonction de la réponse jusqu'à présent, j'ai créé le fichier suivant:

myheader.h

#ifndef my_header_stuff
#define my_header_stuff
    #define PI 3.1415926535897932384626433832795
#endif

et dans les deux fichiers que je veux voir cette constante PI, j'ai inclus ce fichier comme suit:

fichier1.c

#include <stdio.h>
#include <stdlib.h>
#include "myheader.h"
int main(void) {
  etc...
}

et fichier2.c

#include <stdio.h>
#include <stdlib.h>
#include "myheader.h"
double interesting_function(void) {
  etc...
}

Questions:

  1. Lorsque j'utilise GDB pour déboguer, b PI retourne (dans les deux fichiers, même résultat) "Pas de symbole "PI" dans le contexte actuel". Cependant, le calcul en fonction PI est calculé correctement. Est-il un moyen pour afficher PI dans gdb?

  2. Je peux aussi inclure les deux lignes pour stdio et stdlib dans le myheader.h fichier?

  3. Puis-je également inclure tous les prototypes de fonction dans les myheader.h fichier? Si je le fais, et puis il faut dire que j'ai créer un fichier3.c qui n'a pas besoin de l'un de ces prototypes, car il n'utilise pas ces fonctions, est tout mal fait?

Toujours mettre toutes les définitions .c fichiers et les déclarations (y compris les macros).h fichiers. Cela devrait résoudre le problème de 99% du temps.
Grâce JosephH, pouvez-vous m'aider avec la mécanique de cette? Voir ma tentative au-dessus.
Voir la réponse que je viens de posté

OriginalL'auteur ggkmath | 2011-11-29