#define,源文件与头文件,赋值表达式
1.#define
1.1定义
#define 是一个预处理指令,用于定义宏
宏,是预处理阶段(在编译之前)由预处理器处理的代码片段
1.2使用
1.2.1 #define 可以定义常量
#define PI 3.14159
1.2.2 #define 可以定义宏函数
#define SQUARE(x) ((x) * (x))
定义宏函数时的注意事项:
(1)参数x的括号要紧挨着函数名
(2)函数的内容,即表达式中,不要吝啬括号
防止运算律出错
(3)宏函数不检查类型,一般只用于构建简单函数
1.2.3 #define可以用来条件编译
2.头文件与源文件
一、文件扩展名与用途
(1)头文件
(1.1) 通常以".h"为后缀
(1.2)主要用于声明接口,如函数声明、宏定义、结构体定义、类型定义等
(1.3)可以被多个源文件包含,实现代码的重用和模块化
(2)源文件
(2.1)通常以".c"为后缀
在C++中,源文件通常以“.cpp”为后缀,但C语言中一般使用“.c”
(2.2)主要用于实现功能,包含函数的具体实现、全局变量的定义等
(2.3)源文件是编译器生成可执行文件的基础
二、内容与结构
(1)头文件
通常包含以下内容:
- 函数声明:告诉编译器函数的名称、返回类型和参数类型
- 宏定义:使用
#define
指令定义常量或宏- 结构体定义:定义数据结构的布局
- 类型定义(typedef):为现有类型定义新的名称
- 头文件应该避免包含全局变量的定义,因为全局变量在多个源文件中共享可能会导致链接错误
(2)源文件
通常包含以下内容:
- 函数实现:提供函数的具体实现代码。
- 全局变量定义:定义在程序范围内有效的变量。
- 局部变量定义:在函数或代码块内部定义的变量。
- 程序逻辑:实现程序的具体功能和算法。
总结:
头文件提供了程序的接口声明和宏定义等
源文件则实现了这些接口和定义了程序的具体逻辑
3.赋值表达式的返回值
赋值表达式有返回值
赋值表达式执行赋值操作,即将右侧的值赋给左侧的变量
赋值表达式本身也具有一个值,这个值就是被赋给左侧变量的那个值
a = 5 这个赋值表达式的返回值就是5
所以 b = 5
总结:
赋值表达式在C语言中是有返回值的
这个返回值就是被赋给左侧变量的值