• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Frage zu GCC: Präprozessor Anweisungen [gelöst]

marbas13

Hacker
Hi,

Beim Compilieren eines Treibers stolpere ich bzw. der GCC über eine Präprozessor Anweisung:

#if defined WCM_XFREE86 || GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0

Ich hab seit langem nix mehr mir C gemacht, schon gar nicht mit GCC. Ich kenn
#ifdef <Wert>

Wenn Wert nicht null ist, dann wird Code nach #ifdef bis zum #endif in eine Zwischendatei geschrieben, die dann compiliert wird.

Fragen dazu:
1. Ist beim #ifdef eine Oder Verküpfung mit || erlaubt ?

2. GET_ABI_MAJOR(ABI_XINPUT_VERSION) verstehe ich als Funktionsaufruf. Ist das so ? Aber in einer Präprozessor Anweisung ? Oder heißt das das irgendwo vorher einfach ein "String" GET_ABI_MAJOR(ABI_XINPUT_VERSION) definiert ist, der aber 0 ist ? Also irgendwie was wie: Es gibt einen String Pointer, für den also noch kein Speicherplatz reserviert ist.

Ich wäre super dankbar für und froh über Hilfe!
 

}-Tux-{

Hacker
marbas13 schrieb:
Fragen dazu:
1. Ist beim #ifdef eine Oder Verküpfung mit || erlaubt ?
Ja ist es.

marbas13 schrieb:
2. GET_ABI_MAJOR(ABI_XINPUT_VERSION) verstehe ich als Funktionsaufruf. Ist das so ?

Bei "GET_ABI_MAJOR" handelt es sich um irgendein Macro und nicht um eine Funktion.
Um zu schauen, was das Macro genau macht, musst du in den Code schauen.


}-Tux-{
 
OP
M

marbas13

Hacker
Danke für die schnelle Antwort.

Das heißt:
Code:
#if defined WCM_XFREE86 || GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0

bedeutet:

Wenn WCM_XFREE86 definiert ist oder das Macro GET_ABI_MAJOR den Wert 0 liefert, dann berücksichtige die Zeilen bis zum #endif.

?
 
Oben