C/C++ 预处理指令

c/c++ 预处理指令

在 C 或 C++ 中,我们发现不同的行以 (#) 符号开头。这些称为预处理指令。这些行在编译代码之前的预处理阶段进行处理。在这里我们将看到三种不同类型的预处理指令。这些是 –

条件编译行控制错误指令

有时我们在程序中定义了一些宏。使用条件编译指令。我们可以检查宏是否被定义。我们也可以控制它们。因此,如果定义了一个宏,则执行某些任务,否则执行其他类似的任务。

条件编译指令类似于#ifdef-#elif-#else-#endif。每个#ifdef 块必须以#endif 结束。 #elif 或 #else 是可选的。

示例

#include #define MY_MACRO 10using namespace std;int main() {   #ifdef MACRO   cout << "MACRO is defined" << endl;   #elif MY_MACRO   cout << "MY_MACRO is defined, value is: " << MY_MACRO;   #endif}

输出

MY_MACRO is defined, value is: 10

通过键入#line 使用行控制指令。有时我们会在首选行号方面遇到一些错误。我们可以使用该指令更新行号。如果我们放置它并将当前行更改为 200,那么之后的行将从 201 开始移动。

立即学习“C++免费学习笔记(深入)”;

示例

#include using namespace std;int main() {   cout<< "Current line is: " << __LINE__ << endl;   #line 200   cout << "Hello" << endl;   cout << "World" << endl;   cout<< "Current line is: " << __LINE__ << endl;}

输出

Current line is: 5HelloWorldCurrent line is: 202

error指令用于在编译之前显示错误。假设应该定义一个宏,但如果未定义,则可以显示错误消息。可以使用#error来实现。

示例

#include using namespace std;int main() {   #ifdef MY_MACRO   cout << "MY_MACRO is defined, value is: " << MY_MACRO;   #else   #error MY_MACRO should be defined   #endif}

输出

#error MY_MACRO should be defined

以上就是C/C++ 预处理指令的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:46:14
下一篇 2025年12月17日 14:04:27

相关推荐

  • C++程序从用户获取输入

    在任何编程语言中编写程序时,接收输入是我们几乎在所有程序中要做的基本工作。有时我们直接从控制台获取输入,有时我们从文件中获取输入。从文件中获取输入有一定的好处,因为它不需要我们一遍又一遍地输入,有时我们可以将一些好的输入测试用例保存到文件中。然而,在本文中,我们将重点关注基于控制台的输入。我们将学习…

    2025年12月17日
    000
  • 一个煎饼排序问题?

    这里我们将看到另一个排序问题,名为煎饼排序。这个问题很简单。我们有一个数组。我们必须对此进行排序。但我们只能使用一种称为 rev(arr, i) 的操作。这会将 arr 的元素从 0 反转到第 i 个位置。 这个想法就像选择排序。我们反复将最大元素放在末尾,以减少数组的大小。让我们看看算法来理解这个…

    2025年12月17日
    000
  • 使字符串成为由一串0后面跟着一串1组成的最小移除次数

    问题“进行 0 子字符串的字符串连接的最小删除量”涉及操作字符串的工作。提供 0 和 1 的字符串作为输入,结果是一个整数,反映为了生成连续 0 的子串而必须消除的 0 的最小数量。 换句话说,问题可以重新表述为:给定一个由0和1组成的字符串,为了使剩下的字符串中包含一段连续的0,需要消除多少个0。…

    2025年12月17日
    000
  • 最长非递增子序列在一个二进制字符串中

    在这个问题中,我们需要找到给定字符串的最长非递增子序列。 非递增的意思是字符要么相同,要么按降序排列。由于二进制字符串仅包含“0”和“1”,因此生成的字符串应以“1”开头并以“0”结尾,或者以“0”或“1”开头和结尾。 为了解决这个问题,我们将统计字符串每个位置的前缀“1”和后缀“0”,并找到前缀“…

    2025年12月17日
    000
  • 打印最短路径以在 C 程序中在屏幕上打印字符串。

    Given a string, the program must display the shortest path which will print the string over the screen using that shortest path. Like screen will stor…

    2025年12月17日
    000
  • 使用C++寻找0中1的模式

    在本文中,我们给出了几行和几列的值。我们需要打印一个盒子模式,使得1打印在第一行、第一列、最后一行、最后一列,而0打印在其余元素上。例如− Input : rows = 5, columns = 4Output : 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1Inp…

    2025年12月17日
    000
  • 打印矩阵的对角线模式

    给定一个 n*n 的二维数组,任务是找到给定矩阵的反螺旋排列 Input : arr[4][4]={1,2,3,4, 5,6,7,8, 9,10,11,12 13,14,15,16}Output : 1 6 11 16 4 7 10 13 算法 STARTStep 1 -> declare s…

    2025年12月17日
    000
  • C++程序访问类的私有成员

    类的私有成员只能被类的成员访问。这样做是为了保持面向对象的封装原则,确保数据及其相关函数被保存在一个单元中,并且只能从该类的成员访问。C++有三种不同的访问控制符来指定类的成员的可见性。这三种访问控制符是− Public − 如果一个类的成员具有public可见性,那么这些成员可以从任何其他类中访问…

    2025年12月17日
    000
  • 找到每个给定的N个区间右侧最接近的非重叠区间的索引

    一个标准的区间表示通常包括一组成对排列的起始点和结束点。找到每个指定区间右侧最近的不重叠区间构成了我们目前的困境。这个任务在许多不同的应用中具有巨大的重要性,比如资源分配和调度,因为它涉及识别不与当前区间相交或包含的下一个区间。 语法 为了帮助理解即将展示的代码演示,让我们首先查看将要使用的语法,然…

    2025年12月17日
    000
  • C++程序以给定值找到反正弦

    在三角学中,我们最常使用几个比率:正弦、余弦、正切和其他一些比率。从给定的角度,可以计算这些比率。但是,如果我们有比率值,我们还可以使用反三角函数计算角度。 在本文中,我们将讨论如何通过 C++ 中的反正弦(反正弦)方法从正弦值获取弧度角。 asin() 函数 asin() 方法用于使用反三角正弦函…

    2025年12月17日
    000
  • C++程序将列表转换为集合

    C++中的列表与向量一样是容器,但列表的实现是基于双重的链表与向量的数组实现相比。列表一般不包含列表中的元素分布在连续的位置记忆。列表在其中的任何地方都提供相同的恒定时间操作,这是主要的使用列表的特点。另一方面,集合是包含唯一值的容器某种类型并且所有元素都按升序排序。这两个容器是不同,但是有多种方法…

    2025年12月17日
    000
  • 通过将给定字符的所有出现替换为指定的替换字符来修改字符串

    在这个问题中,我们需要根据字符对数组中给定的字符替换给定字符串的字符。我们将讨论两种不同的解决方法。在第一种方法中,我们通过遍历给定字符串的字符和字符对来替换每个字符。 在第二种方法中,我们将使用一个长度为26的数组来存储与每个字符相关的替换字符,并改变给定字符串的字符。 问题陈述 − 我们给定了一…

    2025年12月17日
    000
  • 加密字符串

    加密是一种通过使用某些技术或某些步骤来更改数据的技术,使其更改为另一种信息或无法直接从中收集到先前的信息。对于加密,我们必须遵循针对特定加密类型固定的某些步骤。 在这个问题中,我们将得到一个字符串,我们必须按照给定的步骤对其进行加密 – 首先,我们必须获取包含相同字符的所有子字符串,并将…

    2025年12月17日
    000
  • 在C语言中,什么是内联函数?

    内联函数可以在函数调用发生的地方替换。函数替换始终是编译器的选择。 在内联函数中,函数调用被实际的程序代码替换。 大多数内联函数用于小型计算。它们不适合大型计算。 内联函数与普通函数类似。唯一的区别是我们在函数名称之前放置了一个关键字 inline。 立即学习“C语言免费学习笔记(深入)”; 内联函…

    2025年12月17日
    000
  • 格雷码的十进制等价及其逆序

    格雷码或反射二进制码是一种数字二进制表示形式,其中两个连续数字仅相差一位。 例如1的格雷码是001,2的格雷码是011。 格雷码通常用于纠错,因为它可以防止在状态更改时通常的二进制表示中可能发生的一些数据错误。 由于其独特的属性,格雷码在 k-map、通信等方面也很有帮助。 先决条件 在进一步阅读之…

    2025年12月17日
    000
  • 如何使用C++在OpenCV中旋转视频?

    旋转视频与旋转图像类似。唯一的区别是我们不是将静态图片加载到图像矩阵中,而是加载了视频或从相机获取视频流。 这里,我们不是加载视频,而是使用相机拍摄视频。如果要使用视频文件,只需正确输入视频文件的地址即可。 以下程序演示了如何使用C++在OpenCV中旋转视频。 示例 H2> #include…

    2025年12月17日
    000
  • 检查给定的图中两个节点之间的路径是否表示最短路径

    要检查图表的两个中心之间的给定路径是否符合最短路径,可以通过使用可靠的最短路径将沿给定路径的整个边缘权重与相同中心组合之间的最短距离进行比较方式计算,例如 Dijkstra 计算或 Floyd−Warshall 计算。如果给定路径上的所有边权重与最有限的删除相匹配,那么它就代表最简单的路径。另外:如…

    2025年12月17日
    000
  • C程序求第n个偶数

    给定一个数字N,我们需要找到第N个偶数。 偶数是能够被2整除且余数为零的数字。例如2、4、6、8、10等。 如果我们仔细观察偶数列表,我们也可以表示它们为 2*1=2, 2*2=4, 2*3=6, 2*4=8,…2*N。 因此,为了解决这个问题,我们可以简单地将数字N乘以2,这样结果就是…

    2025年12月17日
    000
  • C程序以找到链表的长度

    链接列表使用动态内存分配,即它们相应地增长和收缩。它们被定义为节点的集合。这里,节点有两部分,即数据和链路。数据、链接和链表的表示如下 – 链表的类型 链表有四种类型,如下: – 单链表/ 单链表双/双向链表循环单链表循环双链表 我们使用递归方法求链表长度的逻辑是 &#821…

    2025年12月17日
    000
  • C++程序计算矩阵对角线之和

    The utilization of 2-dimensional arrays or matrices is extremely advantageous for severalapplications. Matrix rows and columns are used to hold number…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信