c 语言语法问题关于“\”

fhlkm 2014-10-10 12:28:04
最近看到一段代码 在头文件里面,代码如下:
不太明白里面的"\"到底是什么意思,他们起到什么作用? 是转义 字符吗?
能否解释一下?


#ifndef COMMON_H_
#define COMMON_H_

#define QUEUE_NAME "/test_queue"
#define MAX_SIZE 1024
#define MSG_STOP "exit"

#define CHECK(x) \
do { \
if (!(x)) { \
fprintf(stderr, "%s:%d: ", __func__, __LINE__); \
perror(#x); \
exit(-1); \
} \
} while (0) \


#endif /* #ifndef COMMON_H_ */

...全文
242 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenliqiang 2014-10-11
  • 打赏
  • 举报
回复
表示换行,和不用\全写在一行一样
赵4老师 2014-10-11
  • 打赏
  • 举报
回复
#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
jiangqr1991 2014-10-10
  • 打赏
  • 举报
回复
连接,把多行当作一行
百曉生 2014-10-10
  • 打赏
  • 举报
回复
如楼上所说 如果一个宏的值超过一行,最后需要加\ http://blog.csdn.net/u012421456/article/details/39588101#t2
赵4老师 2014-10-10
  • 打赏
  • 举报
回复
续行符
C_Scholar 2014-10-10
  • 打赏
  • 举报
回复
在你这个代码中的意思,主要是续行,可有可无的东西。 不过,你要是 一行代码太长的话,用这个 \ 可以避免一些不必要的错误。
xionggch 2014-10-10
  • 打赏
  • 举报
回复
在这个代码中没有实际意思,“\”主要是处理字符串
707wk 2014-10-10
  • 打赏
  • 举报
回复
续行符,在字符串或宏定义中可以看到
li4c 2014-10-10
  • 打赏
  • 举报
回复
表示连接到下一行

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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