Forum Programmation.c++ Macro avec saut de ligne

Posté par  .
Étiquettes : aucune
0
21
oct.
2009
Bonjour,
Je suis entrain de faire du portage et dans toutes mes bibliotheques différentes, je suis toujours entrain de rajouter un .h avec comme code celui ci :

#ifdef _MSC_VER
#if defined TARGET_EXPORTS
#define TAGET_API __declspec( dllexport )
#else
#define TARGET_API __declspec( dllimport )
#endif // _LIB


Donc je demandais comment faire un macro avec le code dedans

Genre
#define MACRO_EXPORT (target) \ ...

Mais je me doute que le saut de ligne, ca ne va pas le faire et je doute que

#if defined TARGET_EXPORTS #define TAGET_API __declspec( dllexport ) #else #define TARGET_API __declspec( dllimport
sur une meme ligne ca fasse le café...

Donc si qq a une idée...
Merci
  • # Backslash

    Posté par  . Évalué à 1.

    Je ne sais pas si j'ai bien compris ce que tu voulais faire,
    mais sache que tu peux définir une macro sur plusieurs lignes avec \ (backslash), genre :


    #define MACRO_EXPORT (target) \
    #ifdef _MSC_VER \
    #if defined TARGET_EXPORTS \
    #define TAGET_API __declspec( dllexport ) \
    #else \
    #define TARGET_API __declspec( dllimport ) \
    #endif // _LIB


    Après ce que ça t'apporte, je vois pas bien.
    • [^] # Re: Backslash

      Posté par  . Évalué à 1.

      Bé je pensais que ca ca marchait pas, ca compilait pas justement...
  • # Utiliser TARGET_API

    Posté par  . Évalué à 1.

    Je pense qu'il te suffit de garder le TARGET_API en faisant :

    #ifdef _MSC_VER
    #if defined TARGET_EXPORTS
    #define TARGET_API __declspec( dllexport )
    #else
    #define TARGET_API __declspec( dllimport )
    #endif // _LIB
    #else
    #define TARGET_API
    #endif


    Après tu n'a pas d'autre code à modifier puisque je suppose que toutes tes fonction utilisent TARGET_API.

    Étienne
    • [^] # Re: Utiliser TARGET_API

      Posté par  . Évalué à 1.

      On m'a proposé ca, ca a l'air pas mal :

      toto.h
      #ifdef _MSC_VER
      #if defined OMK_GVTPlugin_##NAME##_EXPORTS
      #define OMKGVT_##NAME##_API __declspec( dllexport )
      #else
      #define OMKGVT_##NAME##_API __declspec( dllimport )
      #endif // _LIB
      #pragma warning(disable : 4251)
      #pragma warning(disable : 4275)
      #else
      #define OMKGVT_##NAME##_API
      #endif

      truc.h
      #define NAME NAV
      #include "toto.h"
      #undef NAME

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.