C++重新认知:头文件的预处理
2024-01-08 15:25:20
一、为什么头文件需要预处理
预处理的功能是对一个资源进行替换。
预处理的几种形式
-
常见的预处理指令:
#define 宏定义
#undef 取消宏
#include 文本包含
#ifdef 如果宏被定义就进行编译
#ifndef 如果宏未被定义就进行编译
#endif 结束编译块的控制
#if 表达式非零就对代码进行编译
#else 作为其他预处理的剩余选项进行编译
#elif 这是一种#else和#if的组合选项
#line 改变当前的行数和文件名称
#error 输出一个错误信息
#pragma 为编译程序提供非常规的控制流信息 -
文件包含预处理
#include filename -
编译控制预处理
- #ifdef identifier
your code
#endif
- #ifdef identifier
-
#ifndef identifier
your code
#endif -
#if expression
your code
#endif -
#ifdef identifier
your code1
#else
your code2
#endif -
#if expressin1
your code1
#elif expression2
your code2
#else
your code3
#enif
二、预处理头文件
在编译器汇编时 会将我们的源代码文件编译成.i接着编译成汇编文件,然后汇编成二进制文件,最后将所有的汇编的文件在链接到main二进制文件中,如果多次链接相同代码就会出现代码冗余,为了解决这类情况,就需要对头文件进行预处理了。
先看一段代码
这是没有控制预处理的 当我们运行时就会报错
进行控制预处理
这段代码意思是,在链接过程是如果没有定义宏A_H就定义一个宏A_H
如果定义了就会跳过这段代码(解决了链接时代码冗余)。
一般规定的书写规范是在进行宏定义时都是大写。
成功运行:
文章来源:https://blog.csdn.net/Rain_ZZX/article/details/135440293
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!