C语言(预处理)
来源:互联网 发布:软件供应商对比表 编辑:程序博客网 时间:2024/05/19 22:03
- 预处理
在程序编译之前进行的处理,所有的编译预处理命令以#开头。分为宏定义、文件包含、条件编译。
1. 宏
宏定义的作用是某段代码的别名,以#define开头,结尾不用分号。
eg:#define PI 3.14//宏名一般用大写字母
在编译预处理时,只是简单的替换。宏名的有效范围是从定义位置到文件结束。如需终止宏定义的作用域,可以用#undef命令。
eg:#define PI 3.14
//......
#undef PI
若已定义的标识符在字符串中出现,则不替换。
eg:
- 无参宏:上述为无参宏
#define R 2.0
#define PI 3.14
#define L 2*PI*R//可以在宏定义的时候引用已定义的宏
- 有参宏:
#define S(a,b) a*b
S(1+2,3);//表达式替换成a+b*3
#define S(a,b) (a)*(b)//此时S(1+2,3)将替换成(1+2)*3
注:有参宏定义时,宏名与参数间不能有空格,否则将空格后
字符替换成宏名(成为无参宏)。
- 有参宏:
2.文件包含
将指定的文件内容嵌入到指定源文件中,包括两种方式。
#include"xxx.x"//通用方式。此方式一般包含自己写的文件,即先在源文件所在目录中查找要包含的文件,若未能找到则按标准方式查找。
#include<xxx.x>//标准方式。此方式只在c语言编译器的c函数库头文件中查找要包含的文件。
3.条件编译
#ifdef 宏名 /*程序段1*/
判断某个宏是否被定义, 若已定义, 执行随后的程序段1(类似于if判断语句)。#else/*程序段2*/
if判断后,若宏未定义则执行程序段2。
eg:#define PI 3.14
#ifdef PI
程序段1
#else
此时执行程序段1。
程序段2
#ifndef 宏名 /*程序段1*/
r若宏名没有被定义则执行程序段1
#endif
为#if, #ifdef, #ifndef这些条件命令的结束标志。
阅读全文
0 0
- C语言(预处理)
- C语言的编译预处理(38)
- C 语言预处理器(笔记)
- c语言中的预处理(1)
- c语言中的预处理(2)
- 【C语言天天练(二)】预处理
- C语言入门(十六)预处理过程
- (转)C语言预处理命令大全
- C语言基础(十)- 预处理
- 【C语言】预处理(部分内容未整理)
- C语言(预处理与头文件)
- C语言-预处理指令(Preprocessing Directive)
- c语言预处理
- C语言预处理指令
- C语言-预处理程序
- C语言-预处理程序
- C语言编译预处理
- C语言-预处理程序
- Ajax技术--检查用户名是否唯一($.get(url,data,success()))
- Laravel 自定义验证过程
- linux中帐号的管理
- USACO-Section2.2 Preface Numbering [其他]
- 4.Object有哪些公用方法?
- C语言(预处理)
- ES6模块之export和import详解
- 文章标题
- java 排序
- JVM Old Generation的Full GC日志字段不详解
- 使用 vue2 制作一个知乎日报
- arcpy问题记录—访问空间数据
- 第一次留言
- 刷题——ReorderList