C语言中的预处理命令
预处理功能是C语言的重要功能。
问:为什么要预处理,什么是预处理?
答:我们知道高级语言的运行过程是通过编译程序(编译器)把源代码翻译成机器语言,实现运行的。编译程序的工作包含:语法分析、词法分析、代码生成、代码优化等。但是在正式编译之前还有一些工作要做,例如:去掉注释、变换格式之类的。C语言允许在源程序中包含预处理命令,正式编译(词法分析)前,先对这些命令进行“预处理”;然后在进行通常的编译处理。预处理命令从语法上讲不是C语言的一部分,但扩展了C语言程序设计的环境,简化程序开发过程;有利于移植和调试C语言程序。
预处理命令的定义:
以#开头,换行符结尾的行称为预处理命令;预处理命令不是C语言的语法成分,而是传给编译程序的各种指令;预处理命令分为三种:宏定义、文件包含、条件编译;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
宏定义:
定义一个标识符来代表一个字符串;这种标识符称为宏名(macro name);
在源程序中发现该标识符时,都用该字符串替换,形成新的源程序;将标识符替换成指定字符串的过程称为宏替换(macro substitution);
宏替换的操作是在预编译时进行的;
说白了就是将一个变量强制定义为你想要的值。
注意点:
1)全部用大写,以便与变量区分,帮助读者快速识别;
2)最好把所有宏定义命令放在文件的最前面;
如果需要终止宏的作用域,可以使用#undef命令;格式为: #undef 标识符
应用举例:
#define PI 3.14 就是将PI的值定义成3.14,这样在程序里看到PI就可以替换成3.14了
参考链接:
#define的用法详解:https://www.cnblogs.com/shmilxu/p/4837373.html
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
文件包含:
用法:
#include <包含文件名> 或 #include "包含文件名"
作用:
将另一个文件全部包含进来;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
条件编译:
一般情况下,源程序中所有的语句都参加编译;但是有时候也希望根据一定的条件去编译源文件的不同部分;
有时候一个C文件会多次包含同一个头文件,就可能出现重复定义的问题;
这时候可以通过条件编译来避免重复定义(重复包含);
#ifndef __headerfileXXX__
#define __headerfileXXX__
…
文件内容
…
#endif
#ifndef 和 #endif 要一起使用,如果丢失#endif,可能会报错。
参考链接:
#ifndef, #define, #endif 作用:https://www.cnblogs.com/challenger-vip/p/3386819.html
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
最新文章
- 1.ASP.NET MVC使用EPPlus,导出数据到Excel中
- cron 任务
- RansomNote
- HDU4008 Parent and son(树形DP LCA)
- java 除法向上,向下取整
- ReactiveCocoa常见操作方法介绍/MVVM架构思想
- Python中Unicode字符串
- 利用ADO.NET导出大批量数据
- JAVA Lambda Expressions streams
- ref和out的区别
- C++输入结束
- Install Orace 11g on Solaris 10 Sparc 64 bit
- MUI初始化滚动区域
- 基础SELECT示例掌握
- fio——IO基准测试
- ES6标准之基础
- python代码格式检查工具部署pre_commit
- QT_校园导航Update
- 修改git用户密码
- 使用JavaScript完成文字向上间歇滚动
热门文章
- ImageView 的 ScaleType
- Ros学习——roslaunch
- STM32 C++编程 003 USART(串口)类
- Luogu 3761 [TJOI2017]城市
- oracle数据库之多表查询二
- C++ string操作(转载)
- [raspberry pi3] 串口线使用
- 类的继承与super()的意义以即如何写一个正确的异常类
- Fragment之间通过add切换时的显示与隐藏
- Zoey.Dapper--Dapper扩展之把SQL语句放到文件中