一、针对一般语句换行 使用\结尾作为换行标记 在编译时,\后面的换行符将被忽略,当做一行处理。比如宏定义时使用 #define my_puts(x) printf("%s", \ x); 和写作 #define my_puts(x) printf("%s",x); 是没区别的。 针对宏定义中换行,换行符\必不可少。针对执行语句的换行,我们同样可以使用\作为换行符...
名称:宏延续符:也称之为宏的换行符; 作用:当定义的宏不能用一行表达完整时,可以用\表示下一行继续此宏的定义。 注意:换行不能切断单词,只能在空格的地方进行。 范例分析:编译器:gnu C++ DevC++5.1.5 // 为了偏于阅读,采用小写范式宏命名,工程项目开发强烈建议:大写 #include <iostream> #include <stdio.h>...
在宏定义中可以使用 \ 换行符将多行代码合并为一行。例如:在上述代码中,我们定义了一个宏定义 PRINTXY,它用于输出 x 和 y 的值。在 PRINTXY 宏定义中,我们使用了 \ 换行符将两个 printf 语句合并为一行。在 main 函数中,我们调用 PRINTXY 宏定义输出 x 和 y 的值。宏定义中的递归调用 宏定义也可以...
3. "\" 换行 如果本行的宏太长,影响代码的美观或可读性,我们可以使用符号"\"进行换行(实际上宏没有换行,只是看起来换行了)。 #define MICRO_DEMO \ This is MICRO_DEMO 预处理脚本 Demo 1:生成枚举 1. 宏和枚举的区别 宏的声明周期是预编译,它活不到预编译之后,并且他的本质是文本替换。 枚举是一种数...
\:当宏指令需要换行时使用: // 单行 #define message_for(a, b) printf(#a " and " #b ": We love you!\n") // 换行 #define message_for(a, b) \ printf(#a " and " #b ": We love you!\n") Token 连接运算符 ##:当需要连接两个 Token 字符串时使用。
宏的取消 宏定义的换行连接 标准预处理宏 宏(macro)是基于#define所实现的另一种预处理功能。 与基本的#define定义的是常量相比,宏(macro)允许多个参数化替换,参数中可以是固定的字符串,也被一些变量所替代。这个替换的操作将在预编译的时候完成。 宏(macro)的作用是用比较简单的方式表示复杂的函数调用,以提高程...
1、区分不同情况,有多种方式可以采用。不管是哪种情况,都可以用\结尾作为换行标记,在编译时,\后面的换行符将被忽略,当做一行处理。比如宏定义时使用#define my_puts(x) printf("%s", \ x);和写作#define my_puts(x) printf("%s",x);是没区别的。 这里的\必须存在,不能省略。2、不过...
宏定义以换行结束,不需要分号等符号作分隔符。如有以下定定义: # define PI 3.1415926;原希望用PI求圆的周长的语句 c2*PI*r;经宏展开后,变成 c2*3.1415926*r;这就不能达到希望的要求。 带参数宏定义进一步扩充了无参数宏定义的能力,在字符序列替换同时还能进行参数替换。带参数定定义的一般形式为 # define ...
} while(0) /* (no trailing ; ) */ 关键是要在每一个换行的时候加上一个 "\ " //宏定义写出swap(x,y)交换函数 #define swap(x, y)\ x = x + y;\ y = x - y;\ x = x - y; zigbee里多行define有如下例子 #define FillAndSendTxOptions( TRANSSEQ, ADDR, ID, LEN, TxO ) { \...
1、换行(\n)将当前位置移动到下一行开头。2、回车(\r)将当前位置移动到本行开头。Enter键按下后会执行\n\r,这样就是我们看到的一般意义的回车了。所以你用16进制文件查看方式看一个文本,就会在行尾发现"\n\r"Tab是制表符,就是"\t",作用是预留8个 字符的显示宽度,用于对齐。在windows/dos...