L'aide et retourne le résultat dans C macro

Je suis en train de instrument du code de capture et d'impression des messages d'erreur. Actuellement, je suis en utilisant une macro quelque chose comme ceci:

#define my_function(x) \
  switch(function(x)) { \
    case ERROR: \
      fprintf(stderr, "Error!\n"); \
      break; \
  }

Normalement, je n'ai jamais capturer la sortie de fonction et cela fonctionne bien. Mais j'ai trouvé quelques cas où j'ai aussi besoin de la valeur de retour de function(). J'ai essayé quelque chose comme ce qui suit, mais cela produit une erreur de syntaxe.

#define my_function(x) \
  do { \
    int __err = function(x); \
    switch(__err) { \
      case ERROR: \
        fprintf(stderr, "Error!\n"); \
        break; \
    } \
    __err; \
  } while(0)

Je pourrais déclarer une variable globale pour contenir la valeur de retour de la fonction, mais qui semble laid et mon programme est multithread, donc c'est probablement pour causer des problèmes. J'espère qu'il y a une meilleure solution là-bas.

  • Pourquoi ne pas faire une fonction en ligne?
  • La "sortie" d'une fonction n'est pas la même que la "valeur de retour" d'une fonction. Vous voulez que la valeur de retour.
  • Votre post est manquant plusieurs de continuation de ligne de marqueurs. C'est peut être ton erreur de syntaxe.
InformationsquelleAutor Michael Mior | 2010-08-20