c语言预处理宏定义
来源:互联网 发布:java iterator原理 编辑:程序博客网 时间:2024/05/22 15:48
预处理
1.
预处理概述预处理也称预编译,是整个编译过程的最先做的工作,它是指在编译源文 件前对预处理部分进行的编译处理。当对一个源文件进行编译时, 系统将自 动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源 程序的编译。
C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理 地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块 化程序设计。预处理命令以符号“#”开头。
C语言的预处理主要有三个方面:
(1) 文件包含 #include
(2) 宏定义 #define
(3)条件编译 #if ... #endif
2.头文件包含
头文件包含是指在一个文件中包含另一个头文件(.h)的内容,在编译处 理时将另一个头文件的内容复制到#include命令所在的位置。
一般格式:
#include “” 或
#include <>
如: #include <stdio.h> #include <string.h>等
两种格式的区别在于:
(1) 使用双引用: #include “Person.h” 编译器在源文件所在目录搜索头文
件,一般为自定义头文件,如果没找到,再到系统指定的目录中去查找。
(2) 使用尖括号:#include <stdio.h> 编译器在预设目录里搜索头文件,
一般为库文件所在目录,系统头文件。
3.
宏定义
宏定义也称宏替换,宏定义主要有两种形式,一种是简单的不带参数的宏,另一种
是带参数的宏。
不带参数的宏一般格式: #define
如#define PI 3.14159 使用时直接使用PI即可。
注:(1) 标识符一般大写。
(2) 宏定义末尾不加分号。
(3) 宏定义不分配内存,变量定义分配内存。
(4) 预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不
做语法检查。
带参数的宏一般格式:#define 宏名(参数列表)字符串
如#define sub(a,b) ((a)-(b)) 即使用宏sub(a,b)来表示两个数相减。
使用时直接用sub(a,b)来代替a-b:printf(“%d\n”,sub(3,5));
4.
条件包含
#if#elif#else#endif 这几个指令称为条件编译指令,可对程序源 代码的各部分有选择地进行编译。
#include<stdio.h>:系统头文件
#include”stdio.h”:自定义头文件
#define PI 3.14159
宏定义不分配内存
宏定义末尾不加分号
#define PI 3-5:预处理编译器给pi赋值是3-5而不是-2;
#ifndef#define#endif:防止头文件重复包含
阅读全文
2 0
- c语言预处理--宏定义
- c语言预处理宏定义
- C语言预处理——宏定义
- C 语言 之 预处理-------- 宏定义
- C语言-预处理指令1-宏定义
- 【C语言总结】宏定义,预处理
- 【C语言】预处理指令—宏定义
- C语言 预处理指令 1宏定义
- 33.C语言宏定义和预处理
- c语言预处理和宏定义详
- 【C语言】编译预处理及宏定义
- C语言中预处理功能之宏定义
- 【C语言】15-预处理指令1-宏定义
- 【C语言】15-预处理指令1-宏定义
- 【C语言】15-预处理指令1-宏定义
- 【C语言】13 预处理指令1-宏定义
- 【C语言】15-预处理指令1-宏定义
- C语言入门教程19-预处理指令1-宏定义
- java正则匹配返回所有匹配项
- 报头压缩-ROHC报头压缩程序改进
- 高斯分布的信息熵最大。即,高斯分布是最混乱系统。
- C++中的virtual析构函数创建时机(7)---《Effective C++》
- 大端小端模式
- c语言预处理宏定义
- intellij idea 构建 基于spring springmvc hibernate的maven项目《三》
- poj 1752 Advertisement (区间差分约束+最长路 输出可行解)
- 7.18
- ssm框架的缺陷管理系统
- 简单仿微信群聊界面的实现
- OpenCV实现局部动态阈值分割
- 数据统计
- jackson.databind之 com.fasterxml.jackson.databind.ser...错误