我知道对于单行的宏定义,我们可以简单地使用
#ifndef X
#define X 10
#endif
然而我正在尝试使用多行宏完成相同的事情
#ifndef mallocErr(X)
#define mallocErr(X) \
do { \
if (X == NULL) { \
perror("malloc"); \
exit(EXIT_FAILURE); \
} \
} while (0) \
#endif
我确定我的问题是#ifndef mallocErr(X)
的语法错误,但我似乎找不到正确的格式,或者我可能是错误的方法?
#endif
之前立即转义换行符,则#endif
将附加到其前面的任何一行上。该语言要求预处理器语句必须出现在自己的一行上,因此你在这里存在冲突,你已经告诉编译器换行符不应被解释为换行符,但是你的眼睛告诉你的大脑那里有一个换行符。 - paddy