【C之·预处理器】

系列文章目录


文章目录

  • 前言
  • 一、预处理指令
    • 1. #line的用法
      • 1.1 概述
    • 2. #error
      • 2.1 概述
  • 二、示例
    • 1. #line
    • 2. #error
  • 总结


前言

  C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。


一、预处理指令

所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处理器指令:

指令描述
#define定义宏
#include包含一个源代码文件
#undef取消已定义的宏
#ifdef如果宏已经定义,则返回真
#ifndef如果宏没有定义,则返回真
#if如果给定条件为真,则编译下面代码
#else#if 的替代方案
#elif如果前面的 #if 给定条件不为真,当前条件为真,则编译下面代码
#endif结束一个 #if……#else 条件编译块
#error当遇到标准错误时,输出错误消息
#pragma使用标准化方法,向编译器发布特殊的命令到编译器中

1. #line的用法

1.1 概述

(1)#line 用于强制指定新的行号和编译文件名,并对源程序的代码重新编号
(2)用法:#line number newFilename //newFilename 可省略
(3)#line 编译指示字的本质是重定义__LINE__和__FILE__

2. #error

2.1 概述

(1)#error 是一种预编译器指示字,用于生成一个编译错误消息 。
(2)用法:#error [message] //message为用户自定义的错误提示信息,可缺省。
(3)#error 编译指示字用于自定义程序员特有的编译错误消息。类似的,#warning 用于生成编译警告消息。
(4)#error 可用于提示编译条件是否满足。编译过程中的任何错误意味着无法生成最终的可执行程序。

二、示例

1. #line

示例1:

#include <stdio.h>
//作者 A 写的代码
//--------------------------开始--------------------------
//把 line 的下一行定义为第 1 行,文件名为“a.c”
#line 1 "a.c"
//--------------------------结束--------------------------
//作者 B 写的代码
//--------------------------开始--------------------------
//把 line 的下一行定义为第 1 行,文件名为“b.c”
#line 1 "b.c"
//--------------------------结束--------------------------
//作者 C 写的代码
//--------------------------开始--------------------------
#line 1 "MyCode.c"
int main(){printf("%s:%d\n",__FILE__,__LINE__);#line 1 "Test.c"printf("%s:%d\n",__FILE__,__LINE__);return 0;
}
//--------------------------结束--------------------------

运行结果:
在这里插入图片描述

2. #error

示例1:

#ifndef UNIX
#error This software requires the UNIX OS.
#endif

运行结果:
在这里插入图片描述
示例2:

#define SIZE 10
#if SIZE < 0 || SIZE > 100
#error SIZE must be between 1 and 100.
#endif

运行结果:
在这里插入图片描述


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/493461.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0到1入门C++编程——08 函数模板和类模板

文章目录 函数模板1.函数模板基本语法2.函数模板使用的注意事项3.函数模板案例——数组排序4.普通函数和函数模板的区别5.普通函数和函数模板的调用规则6.模板的局限性 类模板1.类模板2.类模板和函数模板的区别3.类模板中成员函数创建时机4.类模板对象做函数参数5.类模板与继承…

飞机订票系统

飞机订票系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

Sora背后团队大揭秘!天才00后?

现在世界上最受关注的技术团队是哪一支&#xff1f; Sora 团队&#xff0c;已经来到聚光灯中心。 不仅项目负责人评论区被挤爆&#xff0c;成了&#x1d54f;最火“景点” 。 当 OpenAI 出手发布 Sora 之后&#xff0c;给人一种降维打击的感觉 —— 效果和之前的技术相比高出…

「哈哥赠书活动 - 48期」-『商业分析思维与实践:用数据分析解决商业问题宣传文案』

⭐️ 赠书 - 《商业分析思维与实践》 ⭐️ 内容简介 本书以业务为导向&#xff0c;详细地讲解了如何通过大数据分析来解决商业问题。其目的在于运用大数据分析思维&#xff0c;帮助读者把学术知识应用于真实的业务场景&#xff0c;解决实际的业务问题。本书基于业务问题&#x…

应急响应实战笔记03权限维持篇(3)

0x00 前言 攻击者在获取服务器权限后&#xff0c;会通过一些技巧来隐藏自己的踪迹和后门文件&#xff0c;本文介绍Linux下的几种隐藏技术。 0x01 隐藏文件 Linux 下创建一个隐藏文件&#xff1a;touch .test.txt touch 命令可以创建一个文件&#xff0c;文件名前面加一个 点…

MYSQL--(1.存储引擎 *2.事务*)

一 存储引擎: 1.介绍 1>在数据库管理系统当中通过使用数据引擎来实现数据的增删改,查询 2>不同的存储引擎提供的有不同的存储机制,索引技巧等功能 MYSQL的核心,就是存储引擎 3>同样的,用户也可以根据自己的需要进行选择,更改自己需要…

学习 LangChain 的 Passing data through

学习 LangChain 的 Passing data through 1. Passing data through2. 示例 1. Passing data through RunnablePassthrough 允许不改变或添加额外的键来传递输入。这通常与 RunnableParallel 结合使用&#xff0c;将数据分配给映射中的新键。 RunnablePassthrough() 单独调用&…

【GAD】DOMINANT个人解读/学习

SDM2019&#xff0c;这是一篇图异常检测领域的经典方法. 问题定义 在本文中&#xff0c;我们使用手写体来表示集合&#xff08;例如&#xff0c; V \mathcal{V} V&#xff09;&#xff0c;粗体小写字母&#xff08;例如&#xff0c; x \mathbf{x} x&#xff09;来表示向量&…

Sora抢饭碗!好莱坞大亨停止,8亿美元投资

好莱坞消息&#xff0c;著名演员、影视投资人Tyler Perry在看到OpenAI最新发布的文生视频模型Sora后&#xff0c;停止了8亿&#xff08;约57亿元&#xff09;美元的投资。 该投资项目位于亚特兰大&#xff0c;本来要扩展十几个摄影棚用于影视剧的拍摄&#xff08;类似横店影视…

golang学习1,dea的golang-1.22.0

参考&#xff1a;使用IDEA配置GO的开发环境备忘录-CSDN博客 1.下载All releases - The Go Programming Language (google.cn) 2.直接next 3.window环境变量配置 4.idea的go插件安装 5.新建go项目找不到jdk解决 https://blog.csdn.net/ouyang111222/article/details/1361657…

【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑

之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践&#xff0c;主要关注在MetaGPT入门和单智能体部分&#xff08;系列文章附在文末&#xff0c;感兴趣的可以看下&#xff09;。现在新的教程来了&#xff0c;新教程主要关注多智能体部分。 本系列文章跟随《M…

java基于微信云开发的智慧校园综合服务(含资讯浏览、场地预约、报修申请、审核管理等功能)微信小程序

java基于微信云开发的智慧校园综合服务&#xff08;含资讯浏览、场地预约、报修申请、审核管理等功能&#xff09;微信小程序 一、演示效果二、流程步骤三、下载链接 一、演示效果 二、流程步骤 1、使用微信小程序官方开发工具导入本项目并开通云开发以及内容管理服务。 2、修…