把一个预处理指示写成多行要用“\”续行,因为根据定义,一条预处理指示只能由一个逻辑代码行组成。而把C代码写成多行则不必使用续行符,因为换行在C代码中只不过是一种空白字符,在做语法解析时所有空白字符都被丢弃了。续行符 宏定义规定,宏定义必须在一行里完成。所以用#define定义宏定义时,有...
C语言中中的连接符(\)是指示编译器行为的利器。 #include <stdio.h> #def\ ine MAX\ 255 int main() { /\ /这是\ \ 注释 i\ n\ t\ *\ p\ = \ NULL; printf("%0X\n", p); return 0; } 我们通过编译,一样能够得到结果。所以说这也是一个C程序。 接续符的使用 (1) 编译器会将反斜杠...
为了更好的演示我们下面的代码会在 Linux 平台下演示(\为续行符): 这段代码,哪一行是有问题的呢? 这里可能有小伙伴就有疑问了, 为什么只有这一行出了问题呢?我们知道注释在预处理阶段就被编译器识别出来了,这里我们可以用 Linux 的一个指令:gcc -E test.c -o test.i 这样就是对 test.c 程序进行翻译,...
1#include <stdio.h>23#defineSWAP(a,b) { int temp = a; a = b; b = temp; }45intmain()6{7inta =1;8intb =2;9intc =3;1011SWAP(a,b);1213printf("a = %d, b = %d\n", a, b);1415SWAP(b,c);1617printf("b = %d, c = %d\n", b, c);1819return0;20} 第三行是一个...
|是位或运算,\ 相当于连接符号,表示下一行是上一行的继续。例如:9|5可写算式如下:00001001 |00000101 00001101 (十进制为13)可见9|5=13 换行的字符串最后,添加双引号,下一行开头也加上双引号就可以。如:char buf[128]; strcpy(buf, "1234567890ab " "cdefg ");上述示例等同于:char buf...
0x0F | 0xF0 = 0xFF \ 表示连接下一行,一般用于定义宏的时候,因为宏定义只有一行,而有时需要写成多行方便查看,比如:define exchange(a, b) { int c;\ c = a;\ a = b;\ b = c;} 上面的定义等价于:define exchange(a, b) {int c; c = a; a = b; b = c;} ...
我们今天来介绍下 C 语言中比较少见的两种符号,接续符和转义符。其实也不少见啦,只是我们平时不太注意罢了,下来我们就介绍下这两种。 我们首先来介绍下接续符(\)。那么接续符到底是什么呢?它是C 语言中指示编译器行为的利器。我们如何来使用接续符呢?编译器会将反斜杠剔除,跟在反斜杠后面的字符自动接续到前一行...
valid comment? //3.正确 注释可以通过续行符续行 in/* */t j; //4.报错 system("pause"); return 0; } gcc4.8.5的语法检查: 为什么4是错的? 看预编译后的结果:执行预编译命令:gcc -E test.c -o test.i (发现预处理阶段gcc并没有报错,说明问题是出在编译后的) ...
一.预定义符号 C标准定义了如下五个预处理符号 在文件输入输出以及输出日志等场合下我们会用到这些预处理符号,比如 \+回车 : 续行符,转义字符,后面不能加任何除回车之外的字符,否则会报错 二.#define关键字 #d…