[C] allégé mon main.c
Es0pe
Messages postés
94
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
Voila m'étant lancé dans un petit projet je commence a avoir un main.c assez ... chargé. J'ai déjà mis mes variables dans un .h mais je voulais savoir comment mettre une partie de programme dans un autre fichier
exemple :
et je voudrais savoir aussi comment l'appelée
Merci
Voila m'étant lancé dans un petit projet je commence a avoir un main.c assez ... chargé. J'ai déjà mis mes variables dans un .h mais je voulais savoir comment mettre une partie de programme dans un autre fichier
exemple :
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include "variable.h" void pause(); int main(int argc, char *argv[]) { mon programme "j'appelle la partie qui est dans un autre fichier (une boucle while un peu longue par exemple" et hop je continue le programme }
et je voudrais savoir aussi comment l'appelée
Merci
A voir également:
- [C] allégé mon main.c
- Windows 10 allégé - Télécharger - Systèmes d'exploitation
- Windows 11 allégé - Accueil - Windows
- Windows allégé - Accueil - Optimisation
- Browsers allege microsoft edge - Accueil - Navigateurs Web
- Tiny11builder : créer facilement un Windows 11 allégé et personnalisé - Guide
7 réponses
Salut,
Les variables dans un .h, c'est pas super.
En fait, ce qu'il faut faire, ce sont des fonctions. Dès que tu peux encapsuler un savoir-faire, tu crées une fonction. Et cette fonction, tu l'appelles d'où tu veux, de ton main par exemple. Par la suite, tu peux être amené à faire plusieurs fichiers. Un fichier regroupera logiquement des fonctions ayant un rapport. Toutes les fonctions d'un fichier susceptible d'être appelées à partir d'un autre devront être recensées dans son .h, tous les autres pourront être utilisés en static.
Cdlt
Les variables dans un .h, c'est pas super.
En fait, ce qu'il faut faire, ce sont des fonctions. Dès que tu peux encapsuler un savoir-faire, tu crées une fonction. Et cette fonction, tu l'appelles d'où tu veux, de ton main par exemple. Par la suite, tu peux être amené à faire plusieurs fichiers. Un fichier regroupera logiquement des fonctions ayant un rapport. Toutes les fonctions d'un fichier susceptible d'être appelées à partir d'un autre devront être recensées dans son .h, tous les autres pourront être utilisés en static.
Cdlt
slt;
rien de plus simple;
tu met ton code dans un .h, exemple traitement.h
tu fait une sorte de fonction
void toto ()
{
ici tu met ton traitement
}
dans ton main.c tu fait
#include "traitement.h"
et quand tu appel ta fonction de traitement tu fais simplement:
toto ();
et voila!
rien de plus simple;
tu met ton code dans un .h, exemple traitement.h
tu fait une sorte de fonction
void toto ()
{
ici tu met ton traitement
}
dans ton main.c tu fait
#include "traitement.h"
et quand tu appel ta fonction de traitement tu fais simplement:
toto ();
et voila!
Ouaip j'avais déjà fait ça sauf qu'il me met une erreur :
6 C:\...\deplacement.h:4, from jeu.c In file included from deplacement.h:4, from jeu.c
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Main.c:
deplacement.h :
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include "variable.h" #include "deplacement.h" void pause(); int main(int argc, char *argv[]) { int continuer = 1; position.x=400; position.y=0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(900, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); void deplacement () SDL_EnableKeyRepeat(10, 10); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: continuer = 0; break; case SDLK_UP: if (positionarbre1.y <600 && positionarbre.y > 600 ) positionarbre1.y=positionarbre1.y+10, positionarbre.y=0; else if (positionarbre1.y>600 && positionarbre.y < 600) positionarbre1.y =0, positionarbre.y=positionarbre.y+10; else if (positionarbre.y >600 && positionarbre1.y>600) positionarbre1.y=0, positionarbre.y=0; else positionarbre1.y=positionarbre1.y+10, positionarbre.y=positionarbre.y+10,; break; case SDLK_LEFT: if (positionVoiture.x > 0) positionVoiture.x = positionVoiture.x - 10; else positionVoiture.x = 0; break; case SDLK_RIGHT: if (positionVoiture.x < 850) positionVoiture.x = positionVoiture.x+10; else positionVoiture.x = 850; break; } break; } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); SDL_BlitSurface(arbre1, NULL, ecran, &positionarbre1); SDL_BlitSurface(arbre, NULL, ecran, &positionarbre); SDL_BlitSurface(voiture, NULL, ecran, &positionVoiture); SDL_BlitSurface(arbre, NULL, ecran, &positionarbre2); SDL_Flip(ecran); } SDL_FreeSurface(voiture); SDL_Quit(); return EXIT_SUCCESS; } void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } }
deplacement.h :
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include "variable.h" void deplacement() { voiture = SDL_LoadBMP("skieur.bmp"); SDL_SetColorKey(voiture, SDL_SRCCOLORKEY, SDL_MapRGB(voiture->format, 255, 255, 255)); positionVoiture.x=450; positionVoiture.y=500; SDL_BlitSurface(voiture, NULL, ecran, &positionVoiture); arbre1 = SDL_LoadBMP("arbre.bmp"); SDL_SetColorKey(arbre1, SDL_SRCCOLORKEY, SDL_MapRGB(arbre1->format, 255, 255, 255)); positionarbre1.x=250; positionarbre1.y=140; SDL_BlitSurface(arbre1, NULL, ecran, &positionarbre1); arbre = SDL_LoadBMP("arbre.bmp"); SDL_SetColorKey(arbre, SDL_SRCCOLORKEY, SDL_MapRGB(arbre->format, 255, 255, 255)); positionarbre.x=750; positionarbre.y=350; SDL_BlitSurface(arbre, NULL, ecran, &positionarbre); arbre2 = SDL_LoadBMP("arbre.bmp"); SDL_SetColorKey(arbre2, SDL_SRCCOLORKEY, SDL_MapRGB(arbre2->format, 255, 255, 255)); positionarbre2.x=700; positionarbre2.y=30; SDL_BlitSurface(arbre2, NULL, ecran, &positionarbre1); }
Donc si je résume ... je laisse tout dans le main.c sauf que je fais des fonctions en plus :/ ... ça va vraiment l'allégé ? :s
Ce n'est pas ce que j'ai dit dans le poste 1.
J'ai dit, que tu fais plusieurs fichiers .c qui vont contenir des fonctions. Les fonctions seront des entités englobant un savoir-faire. Toutes les fonctions qui ont une utilité en dehors du fichier doivent être recensées dans leur .h (leur prototype, pas leur code).
Au final, tu peux avoir toto.c, toto.h (son en-tête associé), titi.c, titi.h et main.c.
Ton main appellera les différentes fonctions. Il sera donc allégé. Le main grosso modo est le chef d'orchestre de tes fonctions (si je puis dire ça ainsi ^^).
J'ai dit, que tu fais plusieurs fichiers .c qui vont contenir des fonctions. Les fonctions seront des entités englobant un savoir-faire. Toutes les fonctions qui ont une utilité en dehors du fichier doivent être recensées dans leur .h (leur prototype, pas leur code).
Au final, tu peux avoir toto.c, toto.h (son en-tête associé), titi.c, titi.h et main.c.
Ton main appellera les différentes fonctions. Il sera donc allégé. Le main grosso modo est le chef d'orchestre de tes fonctions (si je puis dire ça ainsi ^^).
Pour compléter, un mini exemple :
-> traitement.h void GestionClavier(...); //declaration de la fonction -> traitement.cpp #include "traitement.h" void GestionClavier(...) //implémentation de la fonction { //code } -> main.cpp #include "traitement.h" void main() { GestionClavier(); //utilisation de la fonction }