CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Include ?

Eovoid
Eovoid
Niveau 3
11 mars 2011 à 21:45:10

Bonjour à tous.

J'apprends en ce moment à coder en C grâce à site du zéro, mais l'inclusion des headers/sources est mal expliquée.

Je ne comprends pas où mettre les include.

Exemple :
main.c
operations.c
operations.h

Dans quel fichier dois-je inclure quel fichier ?

operations.h dans main.c je suppose mais il doit manquer quelque chose

Merci d'avance pour vos réponses.

chris_27
chris_27
Niveau 10
11 mars 2011 à 22:14:38

Bonsoir,

Je vais botter en touche : quelle est la taille du plus gros code C que tu as écris ? Si c'est moins de 300 lignes, passe au chapitre suivant. :-)

Pocolo
Pocolo
Niveau 10
11 mars 2011 à 22:49:04

" Dans quel fichier dois-je inclure quel fichier ? "

Ça dépends de toi et ton programme ça.
Si sur un fichier tu te sert de certaines variables ou fonctions présentes sur un autre fichier alors il faut inclure ce fichier par exemple.

N4k1m
N4k1m
Niveau 6
12 mars 2011 à 13:27:49

Je vais essayer de faire une explication simple et non détaillée pour que tu puisses comprendre.

Première choses, comme l'a dit Chris_27, ce n'est utile d'une part, que pour mieux structurer son code --> s'il fait même pas 100 lignes, laisse tomber c'est pas la peine de te faire chi** avec ça :ok:

Maintenant il a aussi une autre utilité (principale) c'est de te permettre de réutiliser des fonctions (souvent complexes / longues) que tu aurais implémenté auparavant (afin de ne pas devoir les coder à nouveau à chaque fois que tu en as besoin).

Prenons un exemple basique : tu as créé tes propres fonctions de saisies sécurisées et tu dois les réutiliser souvent dans d'autres programmes. Le mieux est de les implémenter dans par exemple fonctions.c (contiendrait l'implémentation des fonctions, struct, etc ...) et fonctions.h (contiendrait les prototypes, includes, ...). Il te suffirait dans tes nouveaux programmes d'inclure ces fichiers pour directement pouvoir réutiliser tes fonctions de saisie. Ceci étant un exemple fort simple. Ces comme ça que en accumulant des tas de fonctions, tu peux te créer ta petite bibliothèque perso :oui: ... Mais bon comme je l'ai dit : c'est fort basique et on le fait rarement pour si peu !

Un autre exemple, d'un programme sur lequel je travaille actuellement (en C++ mais c'est le même principe), à pour but d'échanger des informations à travers le réseau --> pour ne pas que n'importe qui intercepte les paquets envoyés et puisse lire ce qui transite, je me suis fait des fonctions de cryptage / décryptage basées sur le principe RSA. Elles sont complexes (utilisent le principe d'exponentiation modulaire, un algo du théorème d’Euclide étendu, ...). Fin comme tu le vois c'est long et complexe et si je devais les implémenter à nouveau à chaque fois que je voulais les utiliser dans d'autres programmes : je changerais d'études directement :oui:

Maintenant si tu veux savoir comment utiliser les headers voici comment procéder :

Supposons que tu veuilles utiliser la fonction : int add(int, int) qui fait une addition qui se trouve dans le fichier fonction.h (prototype) et fonction.c (code de la fonction)

1) tu crée un fichier fonction.h et un autre fichier fonction.c (/!\ les fichiers doivent avoir le même nom /!\)

fonction.h :
___________________

  1. ifndef FONCTION_H
  2. define FONCTION_H

int add(int, int); // prototype de la fonction

  1. endif

fonction.c : tu dois include en premier fonction.h
________________________________________________

  1. include "fonction.h"

//implémenter ici ta fonction
int add(int a, int b)
{
.... return (a + b);
}

2) tu crées un fichier principale exemple main.c et la seule chose à inclure ici est fonction.h

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include "fonction.h"

int main(int argc, char **argv)
{
.... int resultat;
.... resultat = add(2, 3);
.... printf("resultat vaut : %d\n", resultat);

.... return EXIT_SUCCESS;
}

Voilà j'espère que tu y arriveras :p Maintenant, je t'ai juste expliqué comment faire et pas comment ça marche... Si tu veux savoir comment le compilo fait pour linker je veux bien te l'expliquer mais demande le moi alors car c'est long et j'ai pas envie de le faire si c'est pour que tu ne le lise pas :ok:

chris_27
chris_27
Niveau 10
12 mars 2011 à 13:40:17

« Première choses, comme l'a dit Chris_27, ce n'est utile d'une part, que pour mieux structurer son code » :d) c'est utile aussi pour faire de la programmation modulaire et pour des questions de réutilisation de code. Mais ces questions n'arrivent qu'une fois qu'on a déjà manipulé une librairie C un peu touffue (genre la SDL). C'est pour ça que j'ai dit de botter en touche.

Eovoid
Eovoid
Niveau 3
12 mars 2011 à 14:52:50

Merci pour vos réponses, j'ai enfin compris :)

N4k1m, merci pour ton aide. Concernant le fonctionnement du préprocesseur, je sais comment ça marche (j'ai commencer la SDL. Mon seul problème c'était de savoir quoi inclure car j'incluais les fichiers ".c")

tbop2
tbop2
Niveau 10
12 mars 2011 à 15:59:22

Gné tu commences la SDL sans savoir comment fonctionnent les headers ???

Bon ok le sdz est critiqué ici mais t'es sûr que t'as pas un peu sauté des chapitres là ?

Eovoid
Eovoid
Niveau 3
12 mars 2011 à 22:20:06

J'ai déjà fait les chapitres d'après
Seulement c'était avant les vacances et comme j'ai un peu oublié alors je relit tout. En relisant je me suis rappelé que je n'avais pas encore résolu ce problème.

N4k1m
N4k1m
Niveau 6
13 mars 2011 à 00:21:19

"c'est utile aussi pour faire de la programmation modulaire et pour des questions de réutilisation de code" :d) Oui tout à fait d'accord, c'est ce que je disais (du moins voulu dire si ça ne s'est pas compris ;)

chris_27
chris_27
Niveau 10
13 mars 2011 à 03:22:56

Je tenais juste à être un peu plus précis. :-)))

« j'incluais les fichiers ".c" » :d) il y avait effectivement un gros problème. Tu ne dois jamais inclure un fichier .c, considère ça comme une erreur.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment