Wil*_*sch 1 iphone macros objective-c
我刚刚创建了一个Xcode项目并编写了以下代码:
#define foo(x) x
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
int n = 666;
NSString* string = foo([NSString stringWithFormat: @"%d", n]);
NSLog (@"string is %@", string);
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我得到了一堆错误,因为预处理器决定stringWithFormat之后的逗号:应该将两个宏参数分开,因此我使用了两个参数而不是正确的参数.
所以当我想在我的宏内部的语句中使用逗号时,我该怎么办?
这个C++问题提出了一种方法来围绕逗号放置一些圆形的parens(),这显然导致预处理器意识到逗号不是宏参数分隔符.但是,在我的头脑中,我并没有想到在目标C中这样做的方法.
在呼叫周围添加额外的括号有效:
NSString* string = foo(([NSString stringWithFormat:@"%d",n]));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
469 次 |
最近记录: |