IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

defined on command line


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut defined on command line
    Bonjour à tous,

    Voici le fiichier h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     /* gn_gnu.h  */  
     
     
    #ifdef __cplusplus
    #error This source file is not C++ but rather C. Please use a C-compiler
    #endif
     
    #if GN_GNU
    #define H_EDI 13
    #endif
    Le fichier c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    /* gn_gnu.c */
     
     
    #ifdef __cplusplus
    #error This source file is not C++ but rather C. Please use a C-compiler
    #endif
     
     
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include "gn_gnu.h"
     
     
     
    int main(int argc, char *argv[])
    {
    	#ifdef GN_GNU					 /* to be defined externally */
    	printf("\nLuckyly defined: 13=%d\n", H_EDI);
    	#endif
    printf("Not defined.\n");
    	return 0;
    }
    La ligne de commande:

    x86_64-w64-mingw32-gcc-7.3.0.exe -D GN_GNU -Wall -ansi -std=c99 gn_gnu.c -o gn_gnu.exe


    L'erreur:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    gn_gnu.c: Dans la fonction «*main*»:
     
    gn_gnu.c:19:39: error: «*H_EDI*» non déclaré (première utilisation dans cette fonction)
      printf("\nLuckyly defined: 13=%d\n", H_EDI);
                                           ^~~~~
    gn_gnu.c:19:39: note: chaque identificateur non déclaré est rapporté une seule fois pour chaque fonction dans laquelle il apparaît
    Merci de votre attention.


    JPD

  2. #2
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 785
    Par défaut
    Hello,

    Suis pas un spécialiste (loin de là), mais ne serait-ce pas

  3. #3
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    bonsoir

    soit tu utilises #ifdef si tu ne fais que définir une macro, soit tu donnes une valeur non nulle à la macro sur la ligne de commande -DGN_GNU=1 si tu veux utiliser un #if.

    #ifdef MACRO est un raccourci pour #if defined(MACRO). La conditionnelle est vraie à partir du moment où la macro est définie, peu importe qu'elle ait une valeur et peu importe sa valeur si elle en a une.
    #if MACRO évalue la macro (elle doit donc être définie) et ne poursuit que si son évaluation est vraie (une valeur non nulle).

  4. #4
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Si j'utilise ifdef GN_GNU

    et

    x86_64-w64-mingw32-gcc-7.3.0.exe -DGN_GNU -Wall -ansi -std=c99 gn_gnu.c -o gn_gnu.exe

    j'obtiens l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    gn_gnu.c:19:39: error: «*H_EDI*» non déclaré (première utilisation dans cette fonction)
      printf("\nLuckyly defined: 13=%d\n", H_EDI);
                                           ^~~~~

    Si la macro est dédinie dans le fichier h . H_EDI ne devrait-il pas être défini?


    JPD

  5. #5
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    remplace le #if de ton include par un #ifdef

  6. #6
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    C'est ce que j'ai fait:

    Si j'utilise #ifdef GN_GNU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifdef GN_GNU
    #define H_EDI 13
    #endif
    Par contre si je déplace la définition
    #ifdef GN_GNU
    #define H_EDI 13
    #endif

    dans le fichier c

    tout fonctionne.........

    Pourquoi le fichier h ne fonctionne pas même avec x86_64-w64-mingw32-gcc-7.3.0.exe -Ign_gnu.h
    ou
    x86_64-w64-mingw32-gcc-7.3.0.exe -Ign_gnu.h
    x86_64-w64-mingw32-gcc-7.3.0.exe -includegn_gnu.h


    JPD

  7. #7
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Le fichier h est inclu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* gn_gnu.h */
     
    #define AAA "22 vla"
    #ifdef __cplusplus
    #error This source file is not C++ but rather C. Please use a C-compiler
    #endif
    #ifdef DBG_GNU
    #define H_EDI 13
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    /*  */
     
     
    #ifdef __cplusplus
    #error This source file is not C++ but rather C. Please use a C-compiler
    #endif
     
     
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include "gn_gnu.h"
     
     
     
    int main(int argc, char *argv[])
    {
    #ifdef GN_GNU					 /* to be defined externally */
      printf("\nLuckily defined: 13=%d\n", H_EDI);
    #endif
     
    #ifndef GN_GNU					 /* to be undefined externally */
      printf("Not defined. %s\n", AAA);
    #endif
     
      return 0;
    }
    /*   x86_64-w64-mingw32-gcc-7.3.0.exe  -DGN_GNU -Wall -ansi -std=c99 gn_gnu.c  -o gn_gnu.exe
     
    ./gn_gnu.exe   */


    Another@DESKTOP-8007BEU ~/clib
    $ x86_64-w64-mingw32-gcc-7.3.0.exe -undefGN_GNU -Wall -Werror -pedantic -ansi -std=c99 gn_gnu.c -o gn_gnu.exe

    Another@DESKTOP-8007BEU ~/clib
    $ ./gn_gnu.exe
    Not defined. 22 vla



    Il lit le fichier H après le fichier C?


    Merci,

    JPD

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accents Command Line depuis un script Python
    Par nicou50 dans le forum Général Python
    Réponses: 6
    Dernier message: 29/12/2006, 10h41
  2. [Visual C++] Add build events et command line
    Par cfrelet dans le forum MFC
    Réponses: 6
    Dernier message: 11/05/2006, 11h32
  3. [Dev-CPP] Peut-on voir la command line du projet?
    Par vdumont dans le forum Dev-C++
    Réponses: 2
    Dernier message: 04/04/2006, 21h28
  4. unrecognized command line.....DEVC++
    Par Guillaume602 dans le forum Dev-C++
    Réponses: 8
    Dernier message: 20/11/2005, 15h18
  5. newbie : fichier xml vers html via command-line
    Par morti dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/11/2005, 07h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo