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
Bonjour,
Je débute en programmation (language C) et j'apprend sur le site du zéro.

J'ai rédigé un script et bien sur j'ai fais pas mal d'erreur ^^ j'ai corrigé toutes les erreurs de newbie ( ; etc...)
mais je ne comprend pas le reste de mon erreur , lors de la compilation, on me marque "Identificateur non déclaré" pour toutes mes variables, j'ai eu beau chercher, je n'ai pas compris ce qu'il se passait.

J'espère que quelqu'un pourras me venir en aide, si besoin je peux envoyer le script.

Merci :D

Whiplash
A voir également:

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
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 à :
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
1
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
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
0
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.
0
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.. :/

#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;
}
0
TerresMinees > TerresMinees
8 févr. 2009 à 16:03
C'est bon, j'ai créée un nouveau projet et quelques petits changement.. ++
0