Articles of macros

C: Expand Macro With Token Colling

Donc, voici quelques macros que j’ai créées: #define MODULE_NAME moduleName #define MODULE_STRUCT MODULE_NAME ## _struct #define MODULE_FUNCTION(name) MODULE_NAME ## _ ## name Après ces définitions, j’aimerais que les extensions suivantes se produisent: MODULE_STRUCT –> moduleName_struct MODULE_FUNCTION(functionName) –> moduleName_functionName Cependant, lorsque j’ajoute les opérateurs de collage de jetons, l’extension de MODULE_NAME dans MODULE_FUNCTION et MODULE_STRUCT ne […]

C Macros pour créer des chaînes

Titres alternatifs (pour faciliter la recherche) Convertir un jeton de préprocesseur en chaîne Comment créer une chaîne de caractères à partir de la valeur d’une macro C ? Question originale Je voudrais utiliser C #define pour construire des chaînes littérales au moment de la compilation. La chaîne sont des domaines qui changent pour le débogage, […]

Quand la macro NULL n’était-elle pas 0?

Je me souviens vaguement d’avoir lu à ce sujet il y a quelques années, mais je ne trouve aucune référence sur le net. Pouvez-vous me donner un exemple où la macro NULL n’a pas été étendue à 0? Modifier pour plus de clarté: Aujourd’hui, il se développe en ((void *)0) , (0) ou (0L) . […]

Macros C et utilisation des arguments entre parenthèses

Exemple #define Echo(a) a #define Echo(a) (a) Je me rends compte qu’il n’y a probablement pas de différence significative ici, mais pourquoi voudriez-vous jamais inclure a entre parenthèses dans le corps de la macro? Comment cela change-t-il?