Petit problème d'intégration header

Fermé
Abdowned Messages postés 5 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 15 mars 2013 - 25 janv. 2013 à 23:34
mamiemando Messages postés 33295 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 1 octobre 2024 - 26 janv. 2013 à 10:20
Bonjour,

Je suis actuellement en train de développer un "Jeu de la vie" en C pour mon école..
Un mini projet à rendre le 11 février.

Il m'est imposé de mettre des fonctions demandant les dimensions du tableau dans un .h/.c à part.


J'ai fait cela par exemple:

#include "func.h"



static void dimensionnement(int *n, int*m)
{
int longueur, largeur;
printf("veuillez entrer votre longueur");
scanf("%d"longueur);
n=&longueur;
printf("veuillez entrer votre largeur");
scanf("%d"largeur);
n=&largeur;
}

Est-ce possible? Comment lancer cette fonction dans mon main?
J'ai tenté des :

dimensionnement(NULL,NULL) mais je ne m'en sors pas.

Merci d'avance pour la précieuse aide que vous m'apporterez.

1 réponse

mamiemando Messages postés 33295 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 1 octobre 2024 7 788
Modifié par mamiemando le 26/01/2013 à 10:25
Non ce n'est pas comme ça que tu dois faire. Ça ressemblera plutôt à ça :

file1.h

#ifndef FILE1_H  
#define FILE1_H  

int somme(int x, int y);  
unsigned abs(int x);  

#endif


file1.c

#include "file1.h"  

int somme(int x, int y) {  
  return x + y;  
}  

unsigned abs(int x) {  
  return x < 0 ? -x : x;  
}

file2.h

#ifndef FILE2_H  
#define FILE2_H  

void ecrire(int x);  

#endif


file2.c

#include "file2.h"  
#include <stdio.h>  

void ecrire(int x) {  
  printf("%d\n", x);  
}


main.c

#include "file1.h"  
#include "file2.h"  

int main() {  
  int a = 3, b = 5;  
  ecrire(somme(a, b));  
  return 0;  
}


Compilation :

Sous linux :

gcc -W -Wall -c file1.c  
gcc -W -Wall -c file2.c  
gcc -W -Wall -o mon_programme main.c file1.o file2.o


Les deux premières lignes produisent respectivement file1.o et file2.o qui contiennent le code machine associées à file1.c et file2.c. Dans la dernière ligne de compilation on compile le fichier source qui contient le main et on le linke avec file1.o et file2.o. Si la compilation réussi, on obtient un fichier mon_programme qui contient grosso modo ce qu'il y avait dans file1.o, file2.o et la traduction de main.c en code machine.

Si le programme dépendait de librairies (par exemple la librairie mathématique) on les aurait passé dans cette dernière ligne (une librairie étant juste une réunion de fichier .o sans "main"). Sous linux des fichiers ".so" ou ".a", sous windows ces fichiers ont généralement pour extension ".dll" ou ".lib".

On peut automatiser la compilation avec un makefile (je passe sur ce point) ce qui permet de lancer par la suite simplement la commande "make" pour compiler tout le programme.

Une fois le programme compilé on peut l'exécuter :

./mon_programme


Bonne chance
0