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 :

Directive préprocesseur et chargement de la SDL


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut Directive préprocesseur et chargement de la SDL
    Bonjour je souhaiterai utiliser les directive du préprocesseur pour charger la SDL mais malheureusement il n'y a que la première condition qui est prise en compte j'ai essayer une autre façon sans guerre plus de résultat.
    Si vous passer par ici, d'avance : merci pour votre aide.

    Code de la 1er façon : s'arrête au premier ifdef et ne fait pas le 2eme ou il y a <SDL/SDL.h> donc j'ai une erreur qui dit : no such file or directory:
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
     
    #define SDL 
     
    #ifdef SDL
    #include <SDL.h>
    #endif
     
    #ifndef SDL 
    #include <SDL/SDL.h>
    #endif
     
    int main (int argc, char *argv[])
    {
     
      return EXIT_SUCCESS;
    }

    La 2eme façon de faire qui ne marche pas non plus et qui regarde que le premier include donc <SDL.h>
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
     
    #define SDL 
     
    #ifdef SDL
    #include <SDL.h>
    #else
    #include <SDL/SDL.h>
    #endif
     
    int main (int argc, char *argv[])
    {
     
      return EXIT_SUCCESS;
    }

  2. #2
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut
    Les conditions fonctionnes.
    C'est juste que ton fichier SDL.h n'est pas là.

    Essaye ce code, puis enleve le commentaire du defined SDL, tu vois la différence.
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
     
    // #define SDL
     
    #ifdef SDL
    	#define RESULTAT 1
    #endif
     
    #ifndef SDL 
    	#define RESULTAT 2
    #endif
     
    int main (int argc, char *argv[])
    {
    	printf("%d \n",RESULTAT);
    	return EXIT_SUCCESS;
    }
    Si tu as le define et que tu as ton fichier sdl au bon endroit ton code devrait marcher.
    La première condition vérifie si tu as defined (sdl), si tu as defined (sdl), il exécute le code, si tu as pas defined (sdl), il exécute pas le code. (SDL.h)
    La deuxième contion vérifie si tu as pas defined (sdl), si tu as defined (sdl), il exécute pas le code, mais si tu as pas defined (sdl), il exécute le code. (SDL/SDL.h)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Merci beaucoup pour ta réponse j'ai compris comment sa fonctionne maintenant.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Autre question comment faire pour éviter de mettre le #define SDL ce que je souhaiterai c'est laissé le compilateur trouver tous seul si c'est SDL.h ou SDL/SDL.h
    et donc faire une code de ce style en disant si ce chemin n'est pas le bon #include <SDL.h> alors prendre ce chemin là #include <SDL/SDL.h>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #ifdef 
    #include <SDL.h>
    #else
    #include <SDL/SDL.h>
    #endif
    Autre question : j'aimerai que #include <SDL/SDL.h> ne soit pas mis dans les autre fichier .c mais seulement dans le main.c est-ce possible ou bien faut-il a chaque fois mettre les include dans chaque fichier .c
    idem pour les includes suivants


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    Merci pour vos réponses

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par hbx360 Voir le message
    Autre question comment faire pour éviter de mettre le #define SDL
    tu peux passer la directive à la compilation avec le flag -D de gcc (donc -DSDL en l'occurrence)

    ce que je souhaiterai c'est laissé le compilateur trouver tous seul si c'est SDL.h ou SDL/SDL.h
    ah non, le compilateur compile, il ne va pas chercher dans les répertoires tout seul comme ça, ce serait plutôt un test à effectuer du côté du makefile à mon avis, mais j'avoue n'avoir jamais essayé

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Merci pour ta réponse.

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

Discussions similaires

  1. [C de base] Directive Préprocesseur
    Par Altrensa dans le forum Débuter
    Réponses: 5
    Dernier message: 19/10/2008, 02h09
  2. Directive préprocesseur #define
    Par Altrensa dans le forum C
    Réponses: 12
    Dernier message: 29/11/2007, 17h53
  3. Réponses: 6
    Dernier message: 19/02/2007, 11h13
  4. [SDL java] chargement de la SDL
    Par yoyooo dans le forum SDL
    Réponses: 6
    Dernier message: 25/08/2006, 00h02
  5. chargement de texture avec la SDL
    Par Fry dans le forum OpenGL
    Réponses: 7
    Dernier message: 27/05/2004, 15h31

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