Tôi có một macro tiền xử lý theo quy định tại build thiết lậpgiá trị macro Preprocessor để Objective-C chuỗi chữ
FOO=BAR
Giá trị đó tôi muốn xoa bóp vào một chuỗi Objective-C đen có thể được truyền đến một phương pháp. CáC#define sau không làm việc, nhưng nó phải chứng minh những gì tôi đang cố gắng để đạt được:
#define FOOLITERAL @"FOO" //want FOOLITERAL to have the value of @"BAR"
myMethodThatTakesAnNSString(FOOLITERAL);
Tôi hy vọng rằng tôi chỉ thiếu rõ ràng bằng cách nào đó, nhưng tôi dường như không thể tìm ra Preprocessor voodoo quyền có được những gì Tôi cần.
Điều đó đã làm được. Tôi đã thử nghiệm đôi, nhưng cũng có "@" như một giá trị vĩ mô và điều đó dường như gây nhầm lẫn nó. Một khác biệt nhỏ là dòng đầu tiên không đại diện cho trường hợp của tôi ở chỗ nó không lấy thiết xây dựng #define FOOVAL FOO #define STRINGIZE (x) #x #define STRINGIZE2 (x) STRINGIZE (x) #define FOOLITERAL @ STRINGIZE2 (FOOVAL) là những gì thực sự hiệu quả đối với tôi. Nhưng câu trả lời của bạn đã cho tôi ở đó. – vagrant
Xin chào @vagrant. Liệu giải pháp này vẫn làm việc cho bạn với LLVM? Tôi đang cố gắng để có được điều này để làm việc, nhưng giá trị thực tế của FOO như được định nghĩa trong các thiết lập xây dựng của tôi tiền xử lý macro không bao giờ xuất hiện. Bạn có thể cập nhật câu hỏi của mình với giải pháp phù hợp với bạn không?Chúc mừng. – epologee
Tại sao không chỉ '#define Helper (STR) @ # STR'? – tadeuzagallo