#define定义需要换行的代码,不是简单的多行编写,看详细描述?

要把下面大括号之间的代码定义成一个宏,怎么做(问题在于“#ifdef“等必须换行)?
{
#ifdef ABC

printf("abc");

#else

printf("123");

#endif
}
注:不要问这代码的意义,这只是用来描述问题写的

第1个回答  2015-04-23
这是条件编译的,如果要变为宏就会丢失一部分,
#define ABC printf("abc");追问

问题的意思,你还没明白,我是把#ifdef,把整个大扩活的所有内容都放在宏里面

本回答被网友采纳
第2个回答  2017-09-06
不管是哪种情况,都可以用\结尾作为换行标记,在编译时,\后面的换行符将被忽略,当做一行处理。比如宏定义时使用
#define my_puts(x) printf("%s", \
x);
和写作
#define my_puts(x) printf("%s",x);
是没区别的。 这里的\必须存在,不能省略。

不过有些情况下可以采用更简单的形式。

1 在字符串中换行。

当字符串过长,写在一行中阅读不便时,可以采用一种特殊的换行方式。
#define FF(a,b,c,d,x,s,ac) \
{ \
a += F(b,c,d) + x + ac; \
a = ROTATE_LEFT(a,s); \
a += b; \
}追问

这种方式,对于定义普通的代码函数的宏是没问题,但是对于我题目中所提出的包含有 #ifdef 等的时候,难以实现。

相似回答