C语言零碎知识点

1.编译预处理

2.宏定义:标识符代替字符串;分为有参数和无参数

3.#undef:删除前面定义的宏的名字。

4.无参宏:宏名后不带参数,一般形式:#define 标识符 字符串     ①宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号一起置换;②宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令;③宏名在源程序中若用引号括起来,则预处理程序不对其作宏带换;④宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。⑤习惯上宏名用大写字母表示,以便于与变量区别。⑥宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换,而是对类型说明符重新命名。

5.带参宏定义:#define 标识符 字符串(含有参数)

#define  M(y)  (y*y + 3*y)①宏名和参数表之间不能有空格出现;②形式参数不分配内存单元因此不必做类型定义只是符号代换,不存在值传递的问题;③形参是标识符,实参可以是表达式;④形参通常要用括号括起来以避免出错;

6.文件包含:把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。

1、#define

命令#define定义了一个标识符及一个串。在源程序中每次遇到该标识符时,均以定义的串代换它。ANSI标准将标识符定义为宏名,将替换过程称为宏 
替换。命令的一般形式为:

#define identifier string

注意:

1该语句没有分号。在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束。

2宏名定义后,即可成为其它宏名定义中的一部分。

3宏替换仅仅是以文本串代替宏标识符,前提是宏标识符必须独立的识别出来,否则不进行替换。例如:#define XYZ 
this is a test,使用宏printf("XYZ");//该段不打印"this is a test"而打印"XYZ"。因为预编译器识 
别出的是"XYZ"

4如果串长于一行,可以在该行末尾用一反斜杠' \'续行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值