我在Eclipse-CDT工作,我有以下#define语句:
#define IS_ARGUMENT_NULL(arg) if (NULL == arg) {fprintf(stderr, "%s is NULL", #arg); bool isNull = true;}
这条线对我来说太长了(我需要保持每行最多80个字符)而且我想知道我怎么能用代码编写一行才能编译好。 我尝试按下输入并获取
#define IS_ARGUMENT_NULL(arg) if (NULL == arg) {fprintf(stderr, "%s is NULL", #arg);
bool isNull = true;}
但它不会编译。在第二行说“预期标识符'或'''''''令牌”
答案 0 :(得分:1)
反斜杠(\
)是行继续符。
#define IS_ARGUMENT_NULL(arg) \
if (NULL == arg) { \
fprintf(stderr, "%s is NULL", #arg); \
bool isNull = true; \
}
来自gcc manual:
宏的主体在'#define'行的末尾结束。你可以 如有必要,使用,将定义继续到多行 反斜杠换行符。然而,当扩展宏时,它将全部展开 一行出来。