欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言零碎知识点

程序员文章站 2022-05-25 12:21:12
C语言零碎知识点 1.编译预处理 2.宏定义:标识符代替字符串;分为有参数和无参数 3.#undef:删除前面定义的宏的名字。 4.无参宏:宏名后不带参数,一般形式:#de...

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如果串长于一行,可以在该行末尾用一反斜杠' \'续行。