2 Stimmen

Xcode & Präprozessor ##

Kann ich in Xcode ## in einem Makro verwenden?

In MSVC kann ich schreiben:

#define FOO(_var) int foo##_var## = 1

    FOO(bar);
    foobar++;

Auf dem Mac ( bearbeiten: Kompilieren mit GCC) der gleiche Code gibt mir den Fehler "Einfügen von "foobar" und "=" nicht eine gültige Vorverarbeitung Token geben. Wird ## in Xcode nicht unterstützt?

10voto

Nicholas Riley Punkte 41936

Die Verkettung wird in GCC und Clang unterstützt. Xcode ist kein Compiler; wenn Sie Fehler wie diese posten, überprüfen Sie, welche Version von GCC, LLVM-GCC oder Clang ("LLVM-Compiler") Sie verwenden, weil ihr Verhalten unterschiedlich sein kann.

Sie versuchen, die = Teil eines Bezeichners (d.h. eine Variable namens foobar= ), was meiner Meinung nach nicht das ist, was Sie wollen.

Versuchen Sie #define FOO(_var) int foo##_var = 1 stattdessen.

Übrigens gibt Clang eine etwas bessere Fehlermeldung aus:

foo.c:4:5: error: pasting formed 'foobar=', an invalid preprocessing token
    FOO(bar);
    ^
foo.c:1:32: note: instantiated from:
#define FOO(_var) int foo##_var## = 1
                               ^

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X