Découper un programme en C

Fermé
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 - Modifié par linkcr15 le 15/05/2011 à 12:59
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 16 mai 2011 à 09:41
Bonjour,
Voila, j'ai un programme qui fonctionne quand je le met que dans un seul .c
Cependant, quand j'essaie de le couper en plusieurs .c avec des .h pour les déclarations de fonctions, je met les variables globales dans un .c et j'appelle les .c des fonctions avec tous les #include "..." qu'il faut. Cependant, lorsque je compile, je n'arrive même pas à faire un printf, j'obtiens ce genre d'erreur :

error: expected declaration specifiers or '...' before string constant
warning: data definition has no type or storage class
error: conflicting type for 'printf'
not: a parameter list with an ellipsis can't match an empty parameter name list declaration

Est-ce que quelqu'un peut me dire ce qui cloche svp?
Merci d'avance pour vos réponses!

A voir également:

1 réponse

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
Modifié par Hxyp le 16/05/2011 à 09:44
Bonjour,
Sans le code c'est difficile; En premier vérifiez que vous compilez bien pour un projet en C et non en C++, ensuite
Les .h sont les entêtes on peut y déclarer des structures, variables, du code preprocesseur (include etc) mais pour les fonctions on ne met que les prototypes de celles-ci qu'on déclare dans le .c et on initialise les variables/structures dans le .c (pouvez aussi mettre des trucs global dans le .c mais c'est pas terrible je pense)
Un exemple hello world :

dans fichier.c
#include "fichier.h" /* pour récupérer les include du .h et autre trucs partagés, pouvez mettre stdio.h directement dans le .c c'est à vous de voir.. */  
void imprim_hello(void)  
{  
    printf("hello world\n");  
}

dans fichier.h
#include <stdio.h>/* l'include pour le printf utilisé par imprim_hello() */  
void imprim_hello(void);

dans main.c
#include "fichier.h" /* fichier.h contient stdio.h + le prototype de imprim_hello */  
int main(void)  
{  
    imprim_hello();  
    return 0;  
}

compilation avec gcc :
gcc main.c fichier.c -o main
ça sort une binaire (executable) nommé main
0