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

Directives de condition de préprocesseur

MZs7
MZs7
Niveau 10
28 mai 2013 à 02:53:48

A la suite de la lecture de ce document http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-c/les-conditions-2 à partir de "#ifndef pour éviter les inclusions infinies" (CTRL + F pour vous y rendre), je ne comprends pas exactement ce qui est énoncé :(

C'est le principe du #ifndef #define /** code de notre fichier.h **/ #endif qui est sensé contrer le problème d'inclusions à la chaine, je ne comprends pas 1. comment le code fonctionne et 2. de quel fichier il parle quand il met "DEF_NOMDUFICHIER", c'est le fichier.h dans lequel on se trouve c'est ça ? :(

Merci d'avance pour vos réponses :oui:

GLIBC
GLIBC
Niveau 7
28 mai 2013 à 13:42:51
  1. ifndef TOTO_H = if not define = si n'est pas définie
  1. define MAGIC_KEY 42
  1. ifdef MAGIC_KEY = si magic key existe

/* do this*/

  1. elif = si magique key n'existe pas

/* do this */

  1. endif = on ferme ici le ifndef

Les instructions préprocesseurs sont traités à la compilation et non au lancement du programme :ok:

Si ya d'autres chose que tu n'as pas comprit, fais nous en part :ok:

MZs7
MZs7
Niveau 10
28 mai 2013 à 22:44:12

Mmh, en quoi le code que tu as écrit nous protège des inclusions infinies ? A quoi correspondent TOTO_H et MAGIC_KEY 42 ? :(

GLIBC
GLIBC
Niveau 7
29 mai 2013 à 03:51:13

C'est le : #ifndef MY_HEADER_FILE_ qui va verifier si le my_hearder_file.h n'as pas déja etait inclus.

Admettons que tu a deux fichier: main.c et foo.c

Si dans les deux fichiers tu as besoin d'inclure le my_header_file.h, avec le ifndef ton compilo verifira si il est inclut dans plusieurs fichier pour ne pas avoir à l'inclure deux fois :ok:

Ton #ifndef MY_HEADER_FILE_H et suivit par un #define MY_HEADER_FILE_H. Ensuite tu ajoute tes déclarations, structure etc.. et à la fin tu n'oublie pas le #endif pour notifier la fin de ton ifndef.

Dans mon message precedent TOTO_H correspondais à un fichier .h que je prenais pour exemple. Et pareil pour le magic key, c'était seulement une define avec comme nom MAGIC_KEY ayant pour valeur 42.

J'espere que tu as maintenant compris :ok:

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