2016-04-29 11 views
1

In der "Apple-LLVM 7.0 - vorverarbeiten" unter dem "Build Settings" habe ich eine Präprozessormakros wie folgt definiert:Zugriff auf Xcode LLVM Processor Macros

HUBNAME=myhub 

In meinem Code, ich versuche, Bezug zu nehmen auf den Wert von HUBNAME als String:

SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString:HUBLISTENACCESS notificationHubPath:HUBNAME]; 

Aber Xcode denkt 'myhub' ist der Name meiner Variable:

Verwendung von nicht angemeldeten ident ifier 'myhub'

Kann mir jemand helfen herauszufinden, wie man auf 'myhub' als String zugreifen kann?

Antwort

1

Etwas wie TO_STR(arg)=#arg HUBNAME=TO_STR("myhub")? (Oder nur TO_STR(myhub) w/o Zitat.)

NSLog(@"%s", HUBNAME); // SO36947532[13085:4401425] myhub 

Von GNU:

3.4 Stringification

Manchmal möchten Sie ein Makro-Argument in einen String konstant konvertieren. Parameter werden nicht innerhalb von Stringkonstanten ersetzt, aber Sie können stattdessen den Vorverarbeitungsoperator verwenden. Wenn ein Makroparameter mit einem führenden # verwendet wird, ersetzt der Präprozessor es durch den Literaltext des tatsächlichen Arguments, konvertiert in eine Zeichenfolge-Konstante. Im Gegensatz zum normalen Parameteraustausch wird das Argument nicht zuerst macro-expanded. Dies wird Strygification genannt.

Xcode

+0

Dank! Lief wie am Schnürchen. Die eine Sache zu beachten ist, dass ich "@HUBNAME" beim Zugriff auf das Makro aus meinem Code verwendet habe. – Vee

+0

Jede Chance, Sie können eine verwandte Frage: http: //stackoverflow.com/questions/36988067/stringify-endpoint-for-xcode-llvm-processor-macros – Vee

+0

Ich bin derzeit ohne einen Computer irgendwo in Tokio für ein paar Tage . Ich werde nächste Woche nachsehen, wenn es keiner getan hat. –

Verwandte Themen