预处理器的作用

news/2025/2/12 21:12:50/

面试题:预处理器标识#error的目的是什么?

答:#error命令是C/C++语言的预处理命令之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。

其实大部分以#开头的宏定义都是预处理器,不仅仅有#error,还有常见的#include,#ifdef...#else...#endif。有可能你要编写头文件,需要预处理器处理程序的源代码。C++继承了C的非常精细的处理器,编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。

预处理器可以删除注释、包含其他文件以及执行宏(宏macro是一段重复文字的简短描写)替代。

头文件经常需要其他头文件

头文件经常#include其他头文件。包含多个头文件是普遍的,一个头文件也会被多次包含进同一个源文件。这个时候要保证编译的时候多次包含同一头文件不会引起该头文件定义的类和对象被多次定义,这个时候就需要预处理器,保证编译过程中只会包含定义一次。

避免多重包含和嵌套包含

在编写头文件之前,我们需要引入一些额外的预处理器设施。预处理器允许自定义变量。预处理器变量的名字在程序中必须是唯一的。为了规避名字冲突,最好用大写字母,这是规范和素养的体现。

为了避免同一个文件被include多次,C/C++中有两种方式,一种是 #ifndef 方式,一种是 #pragma once 方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。但其实我觉得并不需要太在意,我觉得#pragm


http://www.ppmy.cn/news/330957.html

相关文章

杭州互联网医疗Java实习一面

目录 1.java集合知道哪些2.ArrayList和LinkedList插入效率对比3.HashMap的底层结构4.HashMap怎么实现线程安全4.介绍下reentrantlock5.Redis分布式锁的实现原理7.知道哪些排序算法8.快排的原理9.Spring的AOP作用和原理10.MySQL的InnoDB索引结构11.网络中TCP和UDP的区别12.JVM的…

64位处理器_32位和64位的Windows 10和处理器(CPU)有什么区别

当你下载Windows 10、Office或任何其他软件时,可能会注意到有32位和64位版本可用,这时你可能会想到一个问题,我需要哪个? 在本文中,你可以了解32位和64位Windows 10之间的区别,以及哪种适合你。 本文目录 3…

麒麟810处理器_华为nova5跑分公布,麒麟810到底是什么水平?

华为nova5系列之后,受到关注的除了聚焦在本身的配置和设计外,还有一同推出的麒麟810处理器。作为华为第二款7nm处理器,华为的麒麟810和高通的骁龙7系列比较的话,结果会怎样?这也是不少用户的疑惑。 最近,安…

处理器后面的字母含义_电脑天天用,但CPU后缀的一个字母你知道代表这什么吗?...

如今很多人每天都在使用电脑,有人用电脑进行工作学习、有人只是单纯的使用电脑追个剧。尽管电脑每天都在用,但我相信还是有很多小伙伴弄不清楚电脑CPU那一串字母与数字的组合的具体含义,下面让小编带着大家一起了解一下电脑CPU那一串组合的含义吧! 电脑CPU 下面,我们先来说…

下代Macbook会用什么处理器?

去年年中Intel率先在移动端发布了低电压版的第七代酷睿Kaby Lake,并与今年年初发布了桌面端和高性能移动版的Kaby Lake。Kaby Lake作为“制程-构架-优化”是第六代酷睿Sky Lake的小改版,换用了14nm的改进版工艺14,同频功耗更低,同…

单链表OJ题:LeetCode--138.复制带随即指针的链表

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第138道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏:数据结构与算法 个 人…

利用WinDbg查看堆栈中方法入参的值4(C#)

由于作者水平有限,如有写得不对的地方,请指正。 使用WinDbg的过程中,坑特别的多,对版本要求比较严格,如: 1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题&#xf…

Trie树模板与应用

文章和代码已经归档至【Github仓库:https://github.com/timerring/algorithms-notes 】或者公众号【AIShareLab】回复 算法笔记 也可获取。 文章目录 Trie树(字典树)基本思想例题 Trie字符串统计code关于idx的理解 模板总结应用 最大异或对分…