0
votes

Echap struct champ dans une définition macro

J'ai la structure suivante (simplifiée): xxx

J'ai écrit une macro pour créer la structure xxx

Le problème est que Sur la ligne xxx

error_desc s .error_desc = error_desc est remplacé qui n'est pas ce que je voulais. La seule solution que je peux voir est de renommer le paramètre de fonction macro de error_desc à _error_desc , mais peut-être qu'il y a une meilleure façon. Peut-être que nous pouvons en quelque sorte "Escape" le error_desc pour être substitué dans le .error_desc ?


2 commentaires

Pourquoi ne pas aller à la route simple et simplement renommer l'argument?


@SomeProGrammerDude d'accord, mais je suis curieux si quelque chose comme ça est même possible avec C pré-processeur?


3 Réponses :


1
votes

Vous pouvez "tromper" le préprocesseur avec quelque chose comme xxx

mais ce n'est tout simplement pas la peine. Je viens de renommer le paramètre. Et développer une convention pour la nommage des paramètres qui vous aiderait à éviter de tels conflits de nommage à l'avenir.


sur la deuxième pensée, le supplément Concat n'est même pas nécessaire . Cela permettra d'atteindre le même objectif xxx


0 commentaires

2
votes

Vous pouvez avoir une macro différente que le prétraiteur remplacerait comme error_desc . xxx

alors vous pouvez définir error_set comme ceci: xxx

Cela fonctionne car la substitution n'est effectuée qu'une seule fois.


0 commentaires

3
votes

Il suffit d'utiliser le même nom pour le paramètre et l'élément de structure


0 commentaires