Tôi đang cố tạo một định nghĩa macro có thể phát ra C++ hoặc Objective-C tùy thuộc vào ngữ cảnh nhưng dường như không thể xây dựng một NSString bên trong macro một cách dễ dàng. C++ phiên bản là đơn giản vì nó sử dụng dây thông thường, nhưng đã có một phát ra NSString là minh khéo léo:Định nghĩa tiền xử lý Objective-C, Dynamic C-String để NSString Declaration
#define FOO(x) bar(@##x)
Kết quả dự định là để chuyển đổi một đối số chuỗi để một cuộc tranh cãi NSString bằng cách đặt trước với @
:
FOO("x")
// => bar(@"x")
gì tôi nhận được thay vào đó là một lỗi có thể ngăn chặn biên soạn:
Pasting formed '@"x"', an invalid preprocessing token
'CFSTR' có triển vọng nhưng đó là' CFStringRef' chứ không phải 'NSString *'. – tadman
@tadman chúng là một và giống nhau, và được thu phí cầu nối. –
@tadman: CFStringRef = NSString. – Dani