宏可以多行表示吗?

一如当初 2013-10-21 10:26:53
有些地方的语句是重复的,想用宏来替换,有若干行

比如
x += y;
y += z;
.....



如果写在一行里,感觉看着很乱,能用多行吗?

#define TEST x+=y; y+=z; ......
...全文
188 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin5161678 2013-10-21
  • 打赏
  • 举报
回复
引用 1 楼 max_min_ 的回复:
"\" 宏换行符

#define TEST \
           x+=y; \
           y+=z; 
这个叫做折行符 别叫做宏换行符 那样好像只有宏能用似的
"2311\
213"
in\
t i;
puts(\
"fd\
f");
赵4老师 2013-10-21
  • 打赏
  • 举报
回复
#include <stdio.h>

#define WIRTE_UINT(des ,x ,pos ,len)  (                                   \
    (des)                                                                 \
    &                                                                     \
       ~(                                /* 除要修改的位为0,其余都为1 */ \
            (                                                             \
                (1<<(len))-1             /* 长度为len位的1             */ \
            )                                                             \
            <<(32-(pos)-(len))           /* 左移32-(pos)-(len)位       */ \
        )                                                                 \
    |                                                                     \
        (                                                                 \
            (x)                                                           \
            <<(32-(pos)-(len))                                            \
        )                                                                 \
)
#define READ_UINT(src ,pos ,len)      (                                   \
    (                                                                     \
        (                                                                 \
            (unsigned)(src)                                               \
        )                                                                 \
        >>(32-(pos)-(len))               /* 逻辑右移32-(pos)-(len)位   */ \
    )                                                                     \
    &                                                                     \
    (                                                                     \
        (1<<(len))-1                     /* 长度为len位的1             */ \
    )                                                                     \
)

int main()                              //                1111111111222222222233
{                                       //bit   01234567890123456789012345678901
    unsigned int des = 0x661;           //      00000000000000000000011001100001
    unsigned int r;

    des = WIRTE_UINT(des ,3 ,28 ,2);    //      00000000000000000000011001101101
    printf("des==0x%08X\n",des);
    r = READ_UINT(des ,28 ,2);
    printf("r==%d\n",r);
    return 0;
}
//des==0x0000066D
//r==3
max_min_ 2013-10-21
  • 打赏
  • 举报
回复
"\" 宏换行符

#define TEST \
           x+=y; \
           y+=z; 

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧