在 Objective-C 中使用宏时出现错误

发布于 2024-11-08 14:21:46 字数 490 浏览 0 评论 0原文

我是 Objective-C 的新手。我正在尝试使用宏的示例程序并收到错误。

#import <Foundation/Foundation.h>

#define HELLO_WORLD @"Hello World"

#define a(x,y) ((x)+(y))

#define PRINTMAC(x,y)\
NSLog(@"%d",a((x),(y));\

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    //NSLog(@"%d",add(10,20));
    PRINTMAC(13,72);  //error:
    [pool drain];
    return 0;
} //error:

错误:预期为“;”在“}”标记之前

I am new to Objective-C. I was trying out a sample program using macros and getting errors.

#import <Foundation/Foundation.h>

#define HELLO_WORLD @"Hello World"

#define a(x,y) ((x)+(y))

#define PRINTMAC(x,y)\
NSLog(@"%d",a((x),(y));\

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    //NSLog(@"%d",add(10,20));
    PRINTMAC(13,72);  //error:
    [pool drain];
    return 0;
} //error:

Error: expected ';' before '}' token

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一绘本一梦想 2024-11-15 14:21:46

您似乎在 NSLog 行(第 8 行)上缺少 )

此外,我不确定您是否需要该行的最后一个 \ ,因为宏没有被带到第三行。

最后,我认为您也不需要该行上的 ; ,因为当您调用第 15 行上的宏时,它与分号结合会导致空语句(不应该是有害的) , 尽管)。

You appear to be missing a ) on the NSLog line (line 8).

Additionally, I'm not sure you need the final \ on that line, as the macro is not being carried on to a third line.

Finally, I don't think you need the ; on that line either as it, combined with the semi-colon when you invoke the macro on line 15 results in an empty statement (shouldn't be harmful, though).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文