2017-06-15 1 views
0

Je développe une petite application en c en utilisant turbo C++ IDE.Problème de débogage Turbo C++

J'ai défini les constantes requises dans le fichier d'en-tête et incluses dans la source avec la directive include. J'ai créé un projet en ajoutant un fichier source. Mais pendant le débogage, quand j'ajoute une constante de fichier d'en-tête à la fenêtre de surveillance, elle affiche un 'symbole indéfini'.

Quelqu'un peut-il me diriger dans la bonne direction?

Merci d'avance.

+1

Que voulez-vous dire "constante"? Voulez-vous dire un objet qualifié 'const' ou une macro' # define'? Le premier ne doit pas être défini dans un fichier d'en-tête, le second est 'supprimé' par le processus de compilation. – pmg

+1

** N'utilisez pas TurboC++. ** Il s'agit d'un compilateur pour un langage de programmation * obsolète *. Utilisez [C++ 11] (https://en.wikipedia.org/wiki/C%2B%2B11) (ou C++ 14 ou C++ 17) ou [C99] (https: //en.wikipedia .org/wiki/C99) (ou C11) compilateurs conformes à la norme tels que récent [GCC] (http://gcc.gnu.org/) ou [Clang/LLVM] (http://clang.llvm.org/) . Vous trouverez de nombreux éditeurs de code source, par exemple. 'emacs' ou' vim'- (et construire des outils d'automatisation - par exemple 'make 'GNU) à utiliser avec eux –

+0

Cher @ pmg, j'ai défini une constante comme' #define X_CNST 2 '. Quelle est la raison pour laquelle 'X_CNST' est supprimé par le compilateur? Généralement, il est recommandé d'utiliser des fichiers d'en-tête pour définir des valeurs constantes je pense. –

Répondre

3

Phase 4 of the compilation process élimine efficacement toute #define

#define FOO 42 
/* ... */ 
int a = FOO; 

après la phase 4 devient

/* ... comment deleted in phase 3 */ 
int a = 42; 

Il n'y a pas FOO symbole dans l'exécutable produit.