第六篇:C++语言源程序中每一行加一个反斜杠的意思

源代码如下:

#define PTR_FREE(ptr)\
{\
if ((NULL) != (ptr))\
{\
free(ptr);\
ptr = NULL;\
}\
}

反斜杠是续行符,只能放在一行的末尾

每一行的反斜杠表示紧接着下一行,不间断

为什么要不间断呢?

因为:这是一个宏的定义,语法上只能占用一行,由于定义结构太长,分行书写,需要用"\"来指明分行书写宏定义

下面粘贴网友给出的解释:从解释中可以看出,续行符的使用是针对特殊情况的,即一行没有完成的C指令,需要多行写的时候就需要使用这个续行符。

一般常见的,反斜杠符号在C++中是当做转义符号。但是当#DEFINE遇到反斜杠符号
这玩意儿有个正式的名称叫做续行符,在普通代码行后面加不加都一样(VC是自动判断续行的),但是在宏定义里面就特别有用,因为宏定义规定必须用一行完成:
#define SomeFun(x, a, b) if(x)x=a+b;else x=a-b;
这一行定义是没有问题的,但是这样代码很不容易被理解,以后维护起来麻烦,如果写成:
#define SomeFun(x, a, b)
    if (x)
        x = a + b;
    else
        x = a - b;
这样理解是好理解了,但是编译器会出错,因为它会认为#define SomeFun(x, a, b)是完整的一行,if (x)以及后面的语句与#define SomeFun(x, a, b)没有关系.这时候我们就必须使用这样的写法:
#define SomeFun(x, a, b)\
    if (x)\
        x = a + b;\
    else\
        x = a - b;
注意:最后一行不要加续行符啊.VC的预处理器在编译之前会自动将\与换行回车去掉,这样一来既不影响阅读,又不影响逻辑,皆大欢喜.
看完这个,在VS2012中,对我的程序进行一个改写,去掉反斜杠,在一行中将代码写完,如下:

#define PTR_FREE(ptr){if ((NULL) != (ptr)){free(ptr);ptr = NULL;}}

程序运行正常,和加反斜杠续行效果一样,但是写在一行明显不便于读取,并不是所有的C++编译器都能支持写很长一行的程序,所以,必要时可以选择使用续行符



  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值