Mam makra preprocesora zdefiniowany w ustawieniach kompilacjiPreprocessor makro wartość do Objective-C ciąg dosłownym
FOO=BAR
To wartość Chcę wmasować ciąg Objective-C dosłownym, które mogą być przekazywane do metody. Poniższy #define nie działa, ale powinna ona wykazać, co usiłuję osiągnąć:
#define FOOLITERAL @"FOO" //want FOOLITERAL to have the value of @"BAR"
myMethodThatTakesAnNSString(FOOLITERAL);
Spodziewam się, że jestem po prostu brakuje oczywiste jakoś, ale nie wydaje się znaleźć właściwą preprocesora voodoo, aby dostać to, co Potrzebuję.
To się udało. Próbowałem podwójnego pośrednictwa, ale również "@" jako wartość makro i wydaje się, że to zmyli. Jedna mała różnica polega na tym, że pierwsza linia nie reprezentuje moim przypadku w tym, że nie pobiera kompilacji ustawienie #define FOOVAL FOO #define STRINGIZE (x) #x #define STRINGIZE2 (x) STRINGIZE (x) #define FOOLITERAL @ STRINGIZE2 (FOOVAL) jest to, co faktycznie działa dla mnie. Ale twoja odpowiedź mnie tam dopadła. – vagrant
Witam @vagrant. Czy to rozwiązanie nadal działa z LLVM? Próbuję uruchomić to, ale rzeczywista wartość FOO zdefiniowana w makrach preprocesora moich ustawień kompilacji nigdy się nie wyświetla. Czy mógłbyś zaktualizować swoje pytanie za pomocą rozwiązania, które działa dla Ciebie?Twoje zdrowie. – epologee
Dlaczego po prostu '#define Helper (STR) @ # STR'? – tadeuzagallo