Articles of préprocesseur

Comment utiliser #if dans #define dans le préprocesseur C?

Je veux écrire une macro qui crache du code basé sur la valeur booléenne de son paramètre. Donc, dites DEF_CONST(true) devrait être développé dans const , et DEF_CONST(false) devrait être étendu à rien. Clairement, ce qui suit ne fonctionne pas car nous ne pouvons pas utiliser un autre préprocesseur dans #defines: #define DEF_CONST(b_const) \ #if […]

En C ++ 11, que doit-il se passer en premier: extension de chaîne brute ou macros?

Ce code fonctionne dans Visual C ++ 2013 mais pas dans gcc / clang: #if 0 R”foo( #else int dostuff () { return 23; } // )foo”; #endif dostuff(); Visual C ++ supprime le si 0 en premier. Clang étend la chaîne brute R en premier (et ne définit jamais dostuff). Qui a raison et […]

Est-il possible de faire un #define à l’intérieur d’un autre #define?

Je sais que j’essaie de me tirer dans la jambe;) Cependant, cela me permettra de rendre le rest (en grande quantité) de code plus petit et plus lisible. Existe-t-il un moyen délicat de créer une macro de préprocesseur dans une autre macro de préprocesseur? Voici l’exemple, ce que je recherche. Mon vrai scénario est plus […]

Préprocesseur C, Ssortingngify le résultat d’une macro

Je veux limiter le résultat d’une expansion de macro. J’ai essayé avec les éléments suivants: #define QUOTE(str) #str #define TEST thisisatest #define TESTE QUOTE(TEST) Et TESTE est étendu à: “TEST”, alors que j’essaie d’obtenir “thisisatest”. Je sais que c’est le comportement correct du préprocesseur, mais est-ce que quelqu’un peut m’aider à atteindre l’autre? Using TESTE […]

Variable de préprocesseur non définie WiX

Je commence à utiliser WiX pour faire des builds automatisés pour créer des msi de mes projets c # et je rencontre l’erreur “Variable de préprocesseur non définie ‘$ (var.MyProject.TargetDir)’” J’utilise le dernier WiX v3.0.5419. Dans mon fichier wxs, j’essaie d’utiliser des variables pré-processeur répertoriées sur cette page Web ( http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor- variables.aspx ) J’ai ajouté […]

#Define à l’échelle de la solution

Est-il possible de déclarer globalement un #define? Comme je veux avoir un fichier qui a par exemple, #define MONO et je veux que tous les fichiers de code source sachent que cette directive de préprocesseur est définie. Comment pourrais-je y arriver?

Ssortingngification – comment ça marche?

Je le sais: #define foo 4 #define str(s) #s avec str(foo) écrit: “foo” , car ssortingngify est exécuté en premier lieu du développement de texte, mais ceci: #define xstr(s) str(s) #define str(s) #s #define foo 4 avec xstr(foo) écrit: “4” . Pourquoi? Quelles sont les étapes du processus?

Y a-t-il une bonne raison de toujours inclure une définition entre parenthèses dans C?

Clairement, il y a des moments où define s doit avoir des parenthèses, comme ceci: #define WIDTH 80+20 int a = WIDTH * 2; //expect a==200 but a==120 J’ai donc toujours mis entre parenthèses, même si ce n’est qu’un seul numéro: #define WIDTH (100) Quelqu’un de nouveau sur C m’a demandé pourquoi je faisais cela, […]

Pourquoi utiliser #define au lieu d’une variable

Quel est le but de #define en C ++? J’ai seulement vu des exemples où il est utilisé à la place d’un “nombre magique” mais je ne vois pas l’intérêt de simplement donner cette valeur à une variable.

Comment puis-je faire en sorte qu’une macro C ++ se comporte comme une fonction?

Disons que pour une raison quelconque, vous devez écrire une macro: MACRO(X,Y) . (Supposons qu’il y ait une bonne raison pour laquelle vous ne pouvez pas utiliser une fonction inline.) Vous souhaitez que cette macro émule un appel à une fonction sans valeur de retour. Exemple 1: Cela devrait fonctionner comme prévu. if (x > […]