0

我正在尝试创建一个简单的测试宏,但在以下几行中出现错误。你们中的任何人都知道为什么或如何修复它们吗?

#define test(condition) do{\
    if (condition)
    {\        //// <-----Expected identifier or (
        NSlog @"passed: " %@ #condtion); \

    }
    else
    {\
        NSLog(@"failed: " @ #condition); \

    }
}   //// <-----extraneous closing brace ( "}")
4

2 回答 2

2

您需要在多行宏的每一行末尾添加一个反斜杠(最后一行除外)。

#define test(condition) do{\
    if (condition) \
    {\
        NSlog @"passed: " %@ #condtion); \
    } \
    else \
    { \
        NSLog(@"failed: " @ #condition); \
    } \
}
于 2013-01-14T02:20:56.887 回答
0

你可以简化很多。这里:

#define test(condition) NSLog("%s: %s\n", condition ? "Passed" : "Failed", #condition);

像这样调用:

int i = 6;
test(i > 8);
test(i < 8);

输出:

Failed: i > 8
Passed: i < 8
于 2013-01-14T02:20:35.297 回答