C语言进阶课程学习记录-第23课 - #error 和 #line 使用分析

news2024/11/20 0:35:38

C语言进阶课程学习记录-第23课 - #error 和 #line 使用分析

    • 实验-#errer的使用
    • 实验-缺少#error
    • 实验-#line 1的使用
    • 实验-#line 1用于标记代码
    • 小结

本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录

在这里插入图片描述
在这里插入图片描述

实验-#errer的使用

#include <stdio.h>

#ifndef __cplusplus
    #error This file should be processed with C++ compiler.
#endif

class CppClass
{
private:
    int m_value;
public:
    CppClass()
    {

    }

    ~CppClass()
    {
    }
};

int main()
{
    return 0;
}
#error This file should be processed with C++ compiler.
/*output:

*/

实验-缺少#error

#include <stdio.h>

void f()
{
#if ( PRODUCT == 1 )
    printf("This is a low level product!\n");
#elif ( PRODUCT == 2 )
    printf("This is a middle level product!\n");
#elif ( PRODUCT == 3 )
    printf("This is a high level product!\n");
#endif
}

int main()
{
    f();

    printf("1. Query Information.\n");
    printf("2. Record Information.\n");
    printf("3. Delete Information.\n");

#if ( PRODUCT == 1 )
    printf("4. Exit.\n");
#elif ( PRODUCT == 2 )
    printf("4. High Level Query.\n");
    printf("5. Exit.\n");
#elif ( PRODUCT == 3 )
    printf("4. High Level Query.\n");
    printf("5. Mannul Service.\n");
    printf("6. Exit.\n");
#endif

    return 0;
}
/*output:
1. Query Information.
2. Record Information.
3. Delete Information.
*/

在这里插入图片描述

实验-#line 1的使用

#include <stdio.h>


int main()
{
    printf("%s : %d\n", __FILE__, __LINE__);//文件名 所在行号//129
    #line 1 "delphi_tang.c"//重新定义行号:下一行为1 文件名"delphi_tang.c"
								
    printf("%s : %d\n", __FILE__, __LINE__);//文件名 所在行号

    return 0;
}

/*output:
D:\Users\cy\Test\test1.c : 129
delphi_tang.c : 2
*/

实验-#line 1用于标记代码

#line 1用于标记代码编写人和行号(便于Debug),代码示例:

#include <stdio.h>

// The code section is written by A.
// Begin
#line 1 "a.c"

// End

// The code section is written by B.
// Begin
#line 1 "b.c"

// End

// The code section is written by Delphi.
// Begin
#line 1 "delphi_tang.c"


int main()
{
    printf("%s : %d\n", __FILE__, __LINE__);

    printf("%s : %d\n", __FILE__, __LINE__);

    return 0;
}

// End
/*output:
delphi_tang.c : 5
delphi_tang.c : 7
*/

小结

#error用于自定义一条编译错误信息

#warning用于自定义一条编译警告信息

#error和#warning常应用于条件编译的情形
#line用于强制指定新的行号和编译文件名

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++读取.bin二进制文件

C读取.bin二进制文件 在C中&#xff0c;可以使用文件输入/输出流来进行二进制文件的读写操作&#xff0c;方便数据的保存和读写。 //C读取bin二进制文件 int read_bin() {std::ifstream file("data_100.bin", std::ios::in | std::ios::binary);if (file) {// 按照…

水离子雾化壁炉如何实现火焰的虚实变化?

水离子雾化壁炉通过调节水雾的密度和电子控制器的设置来实现火焰的虚实变化。具体实现方法如下&#xff1a; 调节水雾密度&#xff1a; 超声波振动器可以调节水分子的雾化效果&#xff0c;从而控制水雾的密度。增加水雾的密度会使火焰看起来更实&#xff0c;而减少水雾的密度则…

初始C语言最后一章《编译、链接与预处理详解》

前言 感谢老铁们的陪伴和支持&#xff0c;初始C语言专栏在本章内容也是要结束了&#xff0c;这创作一路下来也是很不容易&#xff0c;如果大家对 Java 后端开发感兴趣&#xff0c;欢迎各位老铁来我的Java专栏&#xff01;当然了&#xff0c;我也会更新几章C语言实现简单的数据结…

【文献分享】机器学习 + 分子动力学 + 第一性原理 + 热力学性质 + 微观结构

分享一篇关于机器学习 分子动力学 第一性原理 热学性质&#xff08;密度、比热容、导热率和粘度&#xff09; 微观结构的文章。 感谢论文的原作者&#xff01; 关键词&#xff1a; 1. Deep potential 2. Machine learning 3. Molecular dynamics 4. Microscopic structu…

RTK-GNSS天线的方向对接收器性能有哪些影响?

RTK-GNSS天线的方向对接收器性能有哪些影响&#xff1f;它取决于许多难以准确定义的因素。 在这篇文章中&#xff0c;我们试图做一个定性分析&#xff0c;看是否能得出结论。 测试环境&#xff1a; 天线安装在三脚架上&#xff0c;环境近乎理想&#xff0c;视野开阔&#xff0…

【javaWeb 第十一篇】(Spring )事务管理AOP

事务管理&AOP 事务管理Spring事务管理事务属性rollbackFor事务属性propagation AOP快速入门AOP概念AOP的执行流程 AOP进阶通知类型通知顺序 切入点表达式切入点表达式-execution切入点表达式-annotation 连接点 事务管理 事务&#xff1a; 事务是一组操作的集合&#xff0…

CSS - 你实现过0.5px的线吗

难度级别:中级及以上 提问概率:75% 我们知道在网页显示或是网页打印中,像素已经是最小单位了,但在很多时候,即便是最小的1像素,精度却不足以呈现所需的线条精度和细节。因此,为了在网页显示和网页打印中呈现更加细致的线条,为了在视觉…

【计算机网络】epoll

IO多路转接 - epoll 一、I/O多路转接之 epoll1. epoll 接口&#xff08;1&#xff09;epoll_create()&#xff08;2&#xff09;epoll_wait()&#xff08;3&#xff09;epoll_ctl() 2. epoll 原理3. epoll 的优点4. epoll 的使用5. epoll 的工作模式&#xff08;1&#xff09;水…

中高级前端? 这些一元运算符,你真的搞清楚了吗

前言 一元运算符&#xff0c;不太起眼&#xff0c;作用很大&#xff0c;请别忽视她&#xff01; 走近她&#xff0c;爱上她&#xff01; 定义 只需要一个操作数的运算符称为一元运算符。 还是代码容易懂&#xff1a; 1 // 一个操作数1 2 // 两个操作数一元运算符清单 运…

MacOS - brew 和 brew cask 有什么区别?

brew 是 ruby 的包管理&#xff0c;后来看 yangzhiping 的博客介绍了 brew cask&#xff0c;感觉 cask 是更好的关联关系管理&#xff0c;但是&#xff0c;我后来使用过程中&#xff0c;发现很多软件 brew cask 里没有&#xff0c;但是 brew 里面倒是挺多&#xff01;今天来给说…

一键批量高效记账,支持通过关键词来筛选某个人的借款记录,方便高效管理收支明细

随着生活节奏的加快&#xff0c;个人和企业财务管理变得越来越复杂。尤其是在处理大量记账任务时&#xff0c;如何快速、准确地完成&#xff0c;并且能够方便地追踪和筛选特定借款记录&#xff0c;成为了许多人关注的焦点。现在&#xff0c;我们为您提供一款全新的财务管理工具…

小程序appsecret在哪里看

问题开发中需要用到appid和secret。但找不到secret。后面发现是在微信开发者平台自己生成才行 微信公众平台 (qq.com) 在开发者平台的开发管理当中&#xff0c;生产即可

U盘位置不可用?数据恢复有高招!

在我们日常生活和工作中&#xff0c;U盘已经成为不可或缺的数据存储工具。然而&#xff0c;有时我们会遭遇一个令人头疼的问题&#xff1a;将U盘插入电脑后&#xff0c;系统提示“U盘位置不可用”。这究竟意味着什么呢&#xff1f;简单来说&#xff0c;这就是电脑无法识别或访问…

mysql慢sql排查与分析

当MySQL遇到慢查询&#xff08;慢SQL&#xff09;时&#xff0c;我们可以通过以下步骤进行排查和优化&#xff1a; 标题开启慢查询日志&#xff1a; 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启&#xff0c;可以…

新项目视频号小店挣钱吗?可全职可副业可量化,新蓝海项目来了!

大家好&#xff0c;我是电商花花。 一个有潜力的新项目&#xff0c;自然会吸引到很多创业者的追捧&#xff0c;尤其是&#xff0c;目前最火的视频号小店无货源项目&#xff0c;可以说是继抖音小店无货源电商之外又一匹黑马。 今年想创业的人不妨看一看&#xff0c;视频号小店值…

chatGPT4无法登录

遇到问题&#xff1a;chatgpt网站上点击登录&#xff08;log in),网站就会跳转并显示&#xff1a;unable to connect 解决方法&#xff1a;不要用亚洲节点&#xff0c;亚洲节点被全面封禁&#xff0c;在全局代理中可以换成美国的节点

约数与倍数-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第45讲。 约数与倍数&#…

基于SpringBoot Vue学生信息管理

一、&#x1f4dd;功能介绍 基于SpringBoot Vue学生信息管理 角色&#xff1a;管理员、学生、教师 管理员&#xff1a;管理员进入主页面&#xff0c;主要功能包括对系统首页、个人中心、学生管理、教师管理、公告通知管理、课程类型管理、课程信息管理、选课信息管理、课程成…

Java 关键字 this 使用详解(通俗易懂)

this关键字主要有以下三个地方使用 在方法体中引用当前对象&#xff0c;即其方法被调用的对象&#xff0c;以便将当前对象的实例变量或当前对象作为参数传递给其他方法。 ① t this.x; 要在方法中引用当前对象&#xff0c;可以使用关键字 this。 ② return this; 作为当前…

Spring注解开发和XML开发

目录 Spring简介发展史Spring Framework系统架构spring 核心概念IOC、IOC容器、Bean、DIIOC快速入门DI快速入门 IOCBean基础配置id与class属性name属性scope属性 Bean的实例化构造方法静态工厂实例工厂FactoryBean的使用&#xff08;工厂实例的简化&#xff09; Bean的生命周期…