question a propos du compilation conditionnelle en C
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

question a propos du compilation conditionnelle en C



  1. #1
    cosmicflow

    question a propos du compilation conditionnelle en C


    ------

    bonjour est ce que vous pouvez m expliquer les termes fmt,stderr et __VA_ARGS__ dans l exemple suivant ,et l interet de ce macro .Pourquoi c est mieux de l utiliser au lieu de fprintf. Merci d avance.


    Nom : 19-03-2019 11-02-18.png
Affichages : 82
Taille : 37,8 Ko

    -----

  2. #2
    albanxiii
    Modérateur

    Re : question a propos du compilation conditionnelle en C

    Bonjour,

    Il ne s'agit pas de compilation conditionnelle.
    "man 3 printf" donne des débuts de réponse.
    Sinon, google...
    Not only is it not right, it's not even wrong!

  3. #3
    PA5CAL

    Re : question a propos du compilation conditionnelle en C

    Bonjour

    Pour produire des messages qui n'ont d'utilité que durant les phases de déboggage et de test, il est préférable de définir une macro-fonction particulière qu'il sera facile de supprimer pour générer le code final sans gêner par ailleurs l'usage normal de la fonction fprintf. Dans le cas présent, il suffira de commenter la ligne et d'en écrire une autre pour faire disparaître d'un coup cette fonctionnalité dans l'ensemble du programme :

    Code:
    // #define DEBUG(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__)
    #define DEBUG(fmt, ...)
    Ici :
    fmt est le premier argument de la macro-fonction DEBUG. Il correspond au deuxième argument de la fonction fprintf, qui précise le format du message produit.
    stderr est le flux d'erreur standard du système. Son écriture correspond à l'envoi d'un message sur la console.
    __VA_ARGS__ désigne la liste d'arguments de longueur variable représentée par les points de suspension (« ... »). Il s'agit d'un artifice qui permet de définir des fonctions dont on ne connaît pas le nombre d'arguments a priori.
    Dernière modification par PA5CAL ; 19/03/2019 à 14h13.

  4. #4
    polo974

    Re : question a propos du compilation conditionnelle en C

    précisions/corrections:

    stderr est le 1er argument de fprintf. fprintf est de la même famille que printf et permet de préciser vers quoi il va imprimer (ici stderr qui est la sortie standard des erreurs). printf envoie d'office vers stdout...

    fmt est le second argument, il défini le formatage des arguments suivants.

    [HS utile] Attention, le piège classique est de faire un printf(str) quand on ne connaît pas le contenu de str, alors qu'il faut faire printf("%s", str) car str peut comporter un '%' qui va mettre la zizanie...

    __VA_ARGS__ désigne la liste d'arguments de longueur variable représentée par les points de suspension (« ... »). Il s'agit d'un artifice qui permet de définir des macros dont on ne connaît pas le nombre d'arguments a priori.



    sinon, un google (__VA_ARGS__) et un peu de lecture t'aurais donné toutes ces infos...
    Jusqu'ici tout va bien...

  5. A voir en vidéo sur Futura
  6. #5
    PA5CAL

    Re : question a propos du compilation conditionnelle en C

    Mouais... Je voulais dire que __VA_ARGS__ sert à définir la fonction utilisée pour définir la macro. En principe on n'utilise pas __VA_ARGS__ quand le nombre d'arguments de la fonction est connu a priori.

    Mais ce que tu écris est juste. Comme __VA_ARGS__ représente les « ... » de la macro, en toute rigueur on pourrait aussi envisager de l'utiliser en dehors des arguments d'une fonction, par exemple :
    Code:
    #define MA_LISTE_D_INSTRUCTIONS( ... ) __VA_ARGS__
    In fine, __VA_ARGS__ est utilisé pour définir la macro.
    Dernière modification par PA5CAL ; 21/03/2019 à 11h31.

  7. #6
    albanxiii
    Modérateur

    Re : question a propos du compilation conditionnelle en C

    Citation Envoyé par polo974 Voir le message
    Sinon, un google (__VA_ARGS__) et un peu de lecture t'aurais donné toutes ces infos...
    C'est marrant, c'est la réponse du message #2

    Je suis admiratif, personnellement je n'ai pas le temps de faire des réponses aussi développées. C'est toujours bien, quand on le demande, d'avoir des explications diverses.
    Not only is it not right, it's not even wrong!

  8. #7
    polo974

    Re : question a propos du compilation conditionnelle en C

    Citation Envoyé par albanxiii Voir le message
    C'est marrant, c'est la réponse du message #2

    Je suis admiratif, personnellement je n'ai pas le temps de faire des réponses aussi développées. C'est toujours bien, quand on le demande, d'avoir des explications diverses.
    Taquin....
    Jusqu'ici tout va bien...

Discussions similaires

  1. petite question sur des contraintes de compilation
    Par dodo71 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 15/12/2012, 08h16
  2. Question à propos des BTS
    Par grex dans le forum Orientation après le BAC
    Réponses: 4
    Dernier message: 17/08/2011, 16h22
  3. Question de compilation du cours
    Par invite4f2b2f9d dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 08/05/2011, 15h37
  4. A propos d'une question du bac
    Par kaderben dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 10/07/2010, 10h55