Identificateur non déclaré (C)
Fermé
Whiplash
Messages postés
63
Date d'inscription
dimanche 14 octobre 2007
Statut
Membre
Dernière intervention
25 février 2010
-
29 oct. 2007 à 19:44
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 8 févr. 2009 à 16:03
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 8 févr. 2009 à 16:03
A voir également:
- Ora-12154: tns : l'identificateur de connexion indiqué n'a pas pu être résolu
- Gmail connexion - Guide
- Coco.fr connexion mobile ✓ - Forum Réseaux sociaux
- Formate pour taxer connexion internet ✓ - Forum Matériel & Système
- Nous n'avons pas pu nous connecter à ce réseau ✓ - Forum WiFi
- Hotmail connexion - Guide
3 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
8 févr. 2009 à 16:03
8 févr. 2009 à 16:03
Vu le message d'erreur tu as écrit plusieurs fichiers sources, et plusieurs d'entre eux ont une fonction main. Or seul l'un deux peut avoir un main (point d'entrée du programme). Les autres fichiers sources (.c) doivent être compilé sous forme de module (.o) qui seront tous assemblés au moment de linker en un exécutable.
Par exemple si j'ai un projet constitué de main.c module1.c module1.h module2.c module2.h tel que main.c utilise module1 et module2 la compilation va ressembler à :
(Avec gcc l'option -c précise au compilateur qu'on compile un module et qu'il ne doit pas s'affoler s'il n'y a pas de fonction main)
Bonne chance
Par exemple si j'ai un projet constitué de main.c module1.c module1.h module2.c module2.h tel que main.c utilise module1 et module2 la compilation va ressembler à :
gcc -W -Wall -c module1.c gcc -W -Wall -c module2.c gcc -W -Wall -o mon_executable main.c module1.o module2.o
(Avec gcc l'option -c précise au compilateur qu'on compile un module et qu'il ne doit pas s'affoler s'il n'y a pas de fonction main)
Bonne chance
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
29 oct. 2007 à 21:34
29 oct. 2007 à 21:34
Il faut plutôt parler de code source plutôt que de script (un script sous entend que le langage est interprété alors que dans le cas du C il est compilé). Apparemment tu utilises un type ou une variable non déclaré. Si tu nous donnes ton code source on pourra t'en dire plus.
Bonne chance
Bonne chance
Idem, j'ai un problème, ça me marque ce problème sous Visual C++..
Par exemple:
1>c:\documents and settings\[...]\calculatrice.c(36) : error C2065: 'resultat_soustraction' : identificateur non déclaré
et la ligne en question:
printf("Le resultat est: %ld", resultat_soustraction);
C'est quoi le problème ? C'est normal qu'il n'est pas déclaré puisque c'est le visiteur qui doit le faire, à moins que je n'aie pas compris le sens de la phrase, et pourtant j'ai mit:
long resultat_soustraction = nombre1_soustraction - nombre2_soustraction;
(D'ailleurs pour cette ligne, on me dit:
1>c:\documents and settings\[...]\calculatrice.c(35) : error C2143: erreur de syntaxe : absence de ';' avant 'type')
Brefouille, merci et à la prochaine.
Par exemple:
1>c:\documents and settings\[...]\calculatrice.c(36) : error C2065: 'resultat_soustraction' : identificateur non déclaré
et la ligne en question:
printf("Le resultat est: %ld", resultat_soustraction);
C'est quoi le problème ? C'est normal qu'il n'est pas déclaré puisque c'est le visiteur qui doit le faire, à moins que je n'aie pas compris le sens de la phrase, et pourtant j'ai mit:
long resultat_soustraction = nombre1_soustraction - nombre2_soustraction;
(D'ailleurs pour cette ligne, on me dit:
1>c:\documents and settings\[...]\calculatrice.c(35) : error C2143: erreur de syntaxe : absence de ';' avant 'type')
Brefouille, merci et à la prochaine.
Bon, ce problème est résolu, mais j'en ai un autre:
1>------ Début de la génération : Projet : bonjour, Configuration : Debug Win32 ------
1>Édition des liens en cours...
1>calculatrice.obj : error LNK2005: _main déjà défini(e) dans main.obj
1>C:\Documents and Settings\Idris\Bureau\Idris\informatique\C\projets\bonjour\Debug\bonjour.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Idris\Bureau\Idris\informatique\C\projets\bonjour\bonjour\Debug\BuildLog.htm"
1>bonjour - 2 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Et je ne vois pas le problème.. :/
1>------ Début de la génération : Projet : bonjour, Configuration : Debug Win32 ------
1>Édition des liens en cours...
1>calculatrice.obj : error LNK2005: _main déjà défini(e) dans main.obj
1>C:\Documents and Settings\Idris\Bureau\Idris\informatique\C\projets\bonjour\Debug\bonjour.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Idris\Bureau\Idris\informatique\C\projets\bonjour\bonjour\Debug\BuildLog.htm"
1>bonjour - 2 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Et je ne vois pas le problème.. :/
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { //on définit les variables long choix_calcul; long nombre1_addition = 0, nombre2_addition = 0, resultat_addition = 0; long nombre1_soustraction = 0, nombre2_soustraction = 0, resultat_soustraction = 0; long nombre1_multiplication = 0, nombre2_multiplication = 0, resultat_multiplication = 0; long nombre1_division = 0, nombre2_division = 0, resultat_division = 0; //On fait le menu printf("1. Faire une addition"); printf("2. Faire une soustraction"); printf("3. Faire une multiplication"); printf("4. Faire une division"); printf("5. Trouver la racine carré"); //Si c'est ça on demande deux nombre au visiteur et on fait le calcul, pareil pour les autres cas switch(choix_calcul) { case 1: printf("Veuillez entrer le premier nombre : "); scanf("%ld", &nombre1_addition); printf("Veuiller rentrer le deuxieme nombre : "); scanf("%ld", &nombre2_addition); resultat_addition = nombre1_addition + nombre2_addition; printf("%ld + %ld = %ld", nombre1_addition, nombre2_addition, resultat_addition); break; case 2: printf("Veuillez entrer le premier nombre : "); scanf("%ld", &nombre1_soustraction); printf("Veuiller rentrer le deuxieme nombre : "); scanf("%ld", &nombre2_soustraction); resultat_soustraction = nombre1_soustraction - nombre2_soustraction; printf("%ld - %ld = %ld", nombre1_soustraction, nombre2_soustraction, resultat_soustraction); break; case 3: printf("Veuillez entrer le premier nombre : "); scanf("%ld", &nombre1_multiplication); printf("Veuiller rentrer le deuxieme nombre : "); scanf("%ld", &nombre2_multiplication); resultat_multiplication = nombre1_multiplication * nombre2_multiplication; printf("%ld * %ld = %ld", nombre1_multiplication, nombre2_multiplication, resultat_multiplication); break; case 4: printf("Veuillez entrer le premier nombre : "); scanf("%ld", &nombre1_division); printf("Veuiller rentrer le deuxieme nombre : "); scanf("%ld", &nombre2_division); resultat_division = nombre1_division / nombre2_division; printf("%ld / %ld = %ld", nombre1_division, nombre2_division, resultat_division); break; default: printf("Etrange..."); break; } //Et voila printf("\n\n\n"); return 0; }