Als «c-preprocessor» getaggte Fragen

Ein Textmakroprozessor, der vor dem Kompilieren von C- und C ++ - Sprachprogrammen angewendet wird. Dieses Tag kann auch für Fragen zu anderen Compilern / Sprachen verwendet werden, die von identischen Funktionen abgeleitet sind oder über identische Funktionen verfügen, z. B. die # -Directives in Objective-C oder C #.


3
Verketten Sie int mit C Preprocessor mit String
Ich versuche herauszufinden, wie ich mit dem C- Präprozessor ein #define'd int mit einem #define' d-String verketten kann . Mein Compiler ist GCC 4.1 unter CentOS 5. Die Lösung sollte auch für MinGW funktionieren. Ich möchte eine Versionsnummer an eine Zeichenfolge anhängen, aber die einzige Möglichkeit, sie zum Laufen zu …


1
Was macht ## (Doppel-Hash) in einer Präprozessor-Direktive?
#define DEFINE_STAT(Stat) \ struct FThreadSafeStaticStat<FStat_##Stat> StatPtr_##Stat; Die obige Zeile stammt aus Unreal 4, und ich weiß, dass ich sie in den unwirklichen Foren nachfragen könnte, aber ich denke, dies ist eine allgemeine C ++ - Frage, die hier gestellt werden muss. Ich verstehe, dass die erste Zeile ein Makro definiert, …

4
Wie verwende ich das Makro-Argument als String-Literal?
Ich versuche herauszufinden, wie man ein Makro schreibt, das sowohl eine Zeichenfolgenliteraldarstellung eines Variablennamens als auch die Variable selbst an eine Funktion übergibt. Zum Beispiel die folgende Funktion gegeben. void do_something(string name, int val) { cout << name << ": " << val << endl; } Ich möchte ein Makro …






2
Wie genau funktioniert der Double-Stringize-Trick?
Mit mindestens einigen C- Präprozessoren können Sie den Wert eines Makros anstelle seines Namens stringisieren, indem Sie es über ein funktionsähnliches Makro an ein anderes übergeben, das es stringiert: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ Beispielanwendungsfälle hier . Dies funktioniert zumindest …

7
Grundlegendes zum Makro container_of im Linux-Kernel
Beim Durchsuchen des Linux-Kernels habe ich ein container_ofMakro gefunden, das wie folgt definiert ist: #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) Ich verstehe, was container_of tut, aber was ich nicht verstehe, ist der letzte Satz …

6
#define vs const in Objective-C
Ich bin neu in Objective-C und habe einige Fragen dazu const und zur Vorverarbeitungsrichtlinie #define. Zunächst stellte ich fest, dass es nicht möglich ist, den Typ der Konstante mit zu definieren #define . Warum ist das so? Zweitens gibt es irgendwelche Vorteile, einen von ihnen gegenüber dem anderen zu verwenden? …

6
#ifdef in #define
Ich versuche so etwas zu schreiben: #define COV_ON(x) \ #ifdef COVERAGE_TOOL \ _Pragma (COVERAGE #x) #endif Gibt es eine Möglichkeit, dies zu definieren COV_ON? Ich weiß, was ich oben getan habe, ist falsch, da ich nicht #ifdefin #define haben kann. ( #ist kein zulässiges Zeichen in #define). Gibt es also …
80 c  c-preprocessor 

4
Mehrzeilige Präprozessor-Makros
Wie erstelle ich ein mehrzeiliges Präprozessor-Makro? Ich weiß, wie man eine Zeile macht: #define sqr(X) (X*X) aber ich brauche so etwas: #define someMacro(X) class X : public otherClass { int foo; void doFoo(); }; Wie kann ich das zum Laufen bringen? Dies ist nur ein Beispiel, das echte Makro kann …
79 c++  c  c-preprocessor 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.