tad*_*man 6 c++ objective-c c-preprocessor
我正在尝试创建一个宏定义,可以根据上下文发出C++或Objective-C,但似乎无法轻松地在宏内部构建NSString.C++版本很简单,因为它使用常规字符串,但制作一个发出NSString的字符串证明是棘手的:
#define FOO(x) bar(@##x)
Run Code Online (Sandbox Code Playgroud)
预期的结果是通过前缀@:将字符串参数转换为NSString参数:
FOO("x")
// => bar(@"x")
Run Code Online (Sandbox Code Playgroud)
我得到的是一个阻止编译的错误:
Pasting formed '@"x"', an invalid preprocessing token
Run Code Online (Sandbox Code Playgroud)
NSString *x = @"text";
Run Code Online (Sandbox Code Playgroud)
等于:
NSString *x = CFSTR("text");
Run Code Online (Sandbox Code Playgroud)
PS NSString*和CFStringRef和__CFString*以及NSCFStringRef都是一样的:免费桥接类型
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |