Eclipse CDT-转到#define语句的下一行

时间:2015-11-26 23:16:20

标签: c eclipse c-preprocessor

我在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;}

但它不会编译。在第二行说“预期标识符'或'''''''令牌”

1 个答案:

答案 0 :(得分:1)

反斜杠(\)是行继续符。

#define IS_ARGUMENT_NULL(arg) \
    if (NULL == arg) { \
        fprintf(stderr, "%s is NULL", #arg); \
        bool isNull = true; \
    }

来自gcc manual

  

宏的主体在'#define'行的末尾结束。你可以   如有必要,使用,将定义继续到多行   反斜杠换行符。然而,当扩展宏时,它将全部展开   一行出来。