宏定义中的续行符

原创 2011年01月15日 10:33:00

宏定义中的续行符
  宏定义规定,宏定义必须在一行里完成。所以用#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的预处理器在编译之前会自动将"/"与换行回车去掉,这样一来既不影响阅读,又不影响逻辑。

相关文章推荐

C++续行符(反斜杠符号)

参考一: 由于最近好几次碰到反斜杠,不明白是什么意思,后来查了下,原来用的较多的是作为强制换行符,衔接上下两行的意思。有时候一个语句太长,一行写不下,或者显得不美观,为了便于阅读,可以将较长的语...
  • zhu2695
  • zhu2695
  • 2013年06月22日 19:09
  • 2929

如何去掉string中包含的续行符(“\”)

如何去掉string中包含的续行符(“\”)

C语言宏定义##连接符和#符的使用等等

1,关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏: ...

通过命令行cl.exe编译Windows程序--预编译跟踪宏定义

通过命令行cl.exe编译Windows程序--跟踪宏定义。

Preprocessor directives:预处理指令,宏定义,行控制,条件包含,错误提示,源文件包含,Pragma

原资料地址,翻译不当之处,请参看原文,最好能帮忙指正,谢谢 预处理器指令 预处理器指令是代码中的哪些以#开头的行,这些行不是程序的一部分,而是作为预处理器的标识。预处理器在开始编译前检查代码,并且在r...

C语言宏定义##连接符和#符的使用2

原文地址:http://blog.csdn.net/dotphoenix/article/details/4345174   目录(?)[-] C语言宏定义##连接符和#符的使用  ...

C语言宏定义##连接符和#符的使用

C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。 关于#和##在C语言的宏中,#的功能是将其后面的...
  • sfrysh
  • sfrysh
  • 2011年03月07日 19:24
  • 760

C语言基础之宏定义##连接符和#符

Preprocessor Operators 一、# 在函数式宏定义中,#运算符用于创建字符串,#运算符后面应该跟一个形参(中间可以有空格或Tab),例如: #define STR(s) # s ST...
  • xqmoo8
  • xqmoo8
  • 2013年09月23日 11:23
  • 772

c/c++中的换行符“\” 宏定义\字符串 多行书写时换行

在代码中当一行的代码过多的时候,对于代码的阅读特别不方便,这时,需要使用换行符“\”。在使用换行符的时候要注意两点: 1.c的编译器是根据“;”来判断是否为一个语句的,所以只要不在小括号中换行都是可...
  • fyfcauc
  • fyfcauc
  • 2014年07月30日 12:03
  • 3620
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:宏定义中的续行符
举报原因:
原因补充:

(最多只允许输入30个字)