[Débutant] aide programation modulaire en C

cookie

Membre actif
7 Février 2004
461
40
43
Bruxelles, Belgique
www.audiocity.be
Bonjour à tous, j'ai une petite question.

Dans mon projet Xcode j'ai trois fichiers.

1. main.c qui contient mon code de base
2. fonctions.c qui contient une bête fonction pour effectuer la sommes entre deux nombres
3. fonctions.h qui contient le prototype de la fonction "somme" située dans le fichier fonctions.c

Je pense avoir fait tout se qu'il faut. Lorsque je lance la compilation, pas de problème mais dès que je commence à utiliser mon code ça ne marche pas. Est-ce que quelqu'un pourrait m'aider ?
Bon, je sais que c'est un peu lourd se que je vous demande donc je comprendrai très bien si vous ne me répondiez pas ;-)

main.c
Bloc de code:
#include <stdio.h>
#include <stdlib.h>
#include "fonctions.h"

int main(int argc, char *argv[])
{
    long nombreEntre1 = 0, nombreEntre2 = 0, nombreFinal = 0;
    
    printf("Entrez le nombre A... ");
    scanf("&#37;ld", &nombreEntre1);
	
	printf ("Entrez le nombre B...");
	scanf("%ld", &nombreEntre2);
    
    nombreFinal = somme(nombreEntre1, nombreEntre2);
    printf("%ld + %ld = %ld\n", nombreEntre1, nombreEntre2, nombreFinal);
    
    return 0;
}

fonctions.c
Bloc de code:
#include <stdio.h>
#include <stdlib.h>

long somme(long nombre1, long nombre2)
{
    return nombre1 + nombre2;
}

fonctions.h
Bloc de code:
long somme(long nombre1, long nombre2);

R&#233;sultat
Bloc de code:
[Session started at 2007-03-31 17:57:46 +0200.]
Entrez le nombre A... 1
Entrez le nombre B...2
ZeroLink: unknown symbol '_somme'

modulaire 1 has exited due to signal 6 (SIGABRT).
 
Bonjour &#224; tous, j'ai une petite question.

Dans mon projet Xcode j'ai trois fichiers.

1. main.c qui contient mon code de base
2. fonctions.c qui contient une b&#234;te fonction pour effectuer la sommes entre deux nombres
3. fonctions.h qui contient le prototype de la fonction "somme" situ&#233;e dans le fichier fonctions.c

Je pense avoir fait tout se qu'il faut. Lorsque je lance la compilation, pas de probl&#232;me mais d&#232;s que je commence &#224; utiliser mon code &#231;a ne marche pas. Est-ce que quelqu'un pourrait m'aider ?
Bon, je sais que c'est un peu lourd se que je vous demande donc je comprendrai tr&#232;s bien si vous ne me r&#233;pondiez pas ;-)

main.c
Bloc de code:
#include <stdio.h>
#include <stdlib.h>
#include "fonctions.h"

int main(int argc, char *argv[])
{
    long nombreEntre1 = 0, nombreEntre2 = 0, nombreFinal = 0;
    
    printf("Entrez le nombre A... ");
    scanf("&#37;ld", &nombreEntre1);
	
	printf ("Entrez le nombre B...");
	scanf("%ld", &nombreEntre2);
    
    nombreFinal = somme(nombreEntre1, nombreEntre2);
    printf("%ld + %ld = %ld\n", nombreEntre1, nombreEntre2, nombreFinal);
    
    return 0;
}

fonctions.c
Bloc de code:
#include <stdio.h>
#include <stdlib.h>

long somme(long nombre1, long nombre2)
{
    return nombre1 + nombre2;
}

fonctions.h
Bloc de code:
long somme(long nombre1, long nombre2);

R&#233;sultat
Bloc de code:
[Session started at 2007-03-31 17:57:46 +0200.]
Entrez le nombre A... 1
Entrez le nombre B...2
ZeroLink: unknown symbol '_somme'

modulaire 1 has exited due to signal 6 (SIGABRT).
ton code marche tr&#232;s bien chez moi... :)

sommec.png
 
As-tu bien d&#233;fini que chaque fichier fait partie de la m&#234;me cible ("target") ?
Dans Xcode, Get Info sur chaque fichier, puis onglet Target pour v&#233;rifier que la case de la cible est coch&#233;e.

Edit : j'ai test&#233; et l'erreur semble bien venir de l&#224;.
 
  • J’aime
Réactions: cookie
ton code marche tr&#232;s bien chez moi... :)

sommec.png
J'ai oubli&#233; de pr&#233;ciser que moi j'ai tester avec tout dans un seul fichier, mais l&#224; je crois que tu oubli de mettre #include "fonction.c" dans le fichier "fonction.h" ou "main.c" :)

Du coup la fonctione somme n'est pas trouv&#233; par le compilo :rateau: ;)

d'o&#249; le unknown symbol '_somme'
 
As-tu bien défini que chaque fichier fait partie de la même cible ("target") ?
Dans Xcode, Get Info sur chaque fichier, puis onglet Target pour vérifier que la case de la cible est cochée.

Edit : j'ai testé et l'erreur semble bien venir de là.

Super merci, mon problème venait bien de là ! :up:
 
J'ai oublié de préciser que moi j'ai tester avec tout dans un seul fichier, mais là je crois que tu oubli de mettre #include "fonction.c" dans le fichier "fonction.h" ou "main.c" :)

Du coup la fonctione somme n'est pas trouvé par le compilo :rateau: ;)

d'où le unknown symbol '_somme'

Aie aie aie ! Evitez a tout pris de faire des includes de .C dans un .H !

Ce n'est qu'une rustine.
Des que le .h sera utilisé ailleurs, ca va donner des erreurs de compilation et de lien a la tonne.

Est tu sur que fonction.c est bien ajouté à ton projet ?

Quand tu as un probleme de ce genre fais un .zip de l'ensemble du dossier projet et poste le quelque part.

Cordialement
 
  • J’aime
Réactions: molgow
Aie aie aie ! Evitez a tout pris de faire des includes de .C dans un .H !

Ce n'est qu'une rustine.
Des que le .h sera utilisé ailleurs, ca va donner des erreurs de compilation et de lien a la tonne.

Est tu sur que fonction.c est bien ajouté à ton projet ?

Quand tu as un probleme de ce genre fais un .zip de l'ensemble du dossier projet et poste le quelque part.

Cordialement
Ok je savais pas :)
Je pensais que le probl&#232;me venait de l&#224; et &#231;a me parassais plut&#244;t logique avec l'erreur du compilo.

Sorry :zen:
 
J'ai oublié de préciser que moi j'ai tester avec tout dans un seul fichier, mais là je crois que tu oubli de mettre #include "fonction.c" dans le fichier "fonction.h" ou "main.c" :)

Du coup la fonctione somme n'est pas trouvé par le compilo :rateau: ;)

d'où le unknown symbol '_somme'

:D Joli le include du .C :love:
 
mais non, il a voulu dire de mettre #include "fonctions.h" dans le fichier fonction.c sinon le lien ne se fait po.

comme tout le monde le sait :siffle:, il ne faut jamais faire un include d'un fichier c... :rateau:
 
mais non, il a voulu dire de mettre #include "fonctions.h" dans le fichier fonction.c sinon le lien ne se fait po.

comme tout le monde le sait :siffle:, il ne faut jamais faire un include d'un fichier c... :rateau:
Ouais mais en plus je savais pas et je voulais bien dire ce que j'ai dis :p

Au moins je m'en rappelerais :)