返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言详细讲解#error与#line如何使用
  • 717
分享到

C语言详细讲解#error与#line如何使用

2024-04-02 19:04:59 717人浏览 安东尼
摘要

目录一、#error 的用法二、#line 的用法三、小结一、#error 的用法 #error 用于生成一个编译错误消息 用法 #error message,message不需要用

一、#error 的用法

#error 用于生成一个编译错误消息

用法

#error message,message不需要用双引号包围

#error 编译指示字用于自定义程序员特有的编译错误消息,类似的,#warning 用于生成编译警告。

#error 是一种预编译器指示字

#error 可用于提示编译条件是否满足

用法示例如下:

编译过程中的任意错误信息意味着无法生成最终的可执行程序。

下面初探一下 #error

#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;
}

这份代码中间那一部分是用 C++ 写的,所以用 GCc 编译器时,编译会报错,其中 #error 那个是我们自定义的错误。

再来看一段 #error 在条件编译中的应用代码:

test.c:

#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");
#else
    #error The Macro PRODUCT is NOT defined!
#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");
#else
    #error The macro PRODUCT is NOT defined!
#endif
    
    return 0;
}

如果我们直接编译,而不去定义宏,那么自定义的错误就会被触发:

如果在编译时把宏加上,就不会出现错误了,例如将 PRODUCT 定义为 3,可以在命令行输入 gcc -DPRODUCT=3 test.c

二、#line 的用法

#line 用于强制指定新的行号和编译文件名,并对源程序的代码重新编号

用法

#line number filename,filename 可省略

#line 编译指示字的本质是重定义 _LINE_ 和 _FILE_

下面看一段 #line 的使用代码:

test.c:

#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 AutumnZe.
// Begin
#line 1 "AutumnZe.c"

int main()
{
    printf("%s : %d\n", __FILE__, __LINE__);
    
    printf("%s : %d\n", __FILE__, __LINE__);
    
    return 0;
}
// End

下面为输出结果:

可以看到,#line 指定了新的行号和编译文件名。

三、小结

  • #error 用于自定义一条编译错误信息
  • #warning 用于自定义一条编译警告信息
  • #error 和 #warning 常应用于条件编译的情形
  • #line 用于强制指定新的行号和编译文件名

到此这篇关于C语言详细讲解#error与#line如何使用的文章就介绍到这了,更多相关C语言 #error与#line内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言详细讲解#error与#line如何使用

本文链接: https://lsjlt.com/news/146492.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言详细讲解#error与#line如何使用
    目录一、#error 的用法二、#line 的用法三、小结一、#error 的用法 #error 用于生成一个编译错误消息 用法 #error message,message不需要用...
    99+
    2024-04-02
  • C语言超详细讲解宏与指针的使用
    目录1、关于define2、初识指针(1)内存(2)示例(3)指针的使用示例(4)指针变量的大小1、关于define define是一个预处理指令,有两种用法,一种是用define定...
    99+
    2024-04-02
  • C语言超详细讲解指针的概念与使用
    目录一、指针与一维数组1. 指针与数组基础2. 指针与数组3. 一个思考二、指针与字符串三、指针和二维数组1. 指针数组与数组指针2. 指针数组3. 数组指针一、指针与一维数组 1....
    99+
    2024-04-02
  • C语言详细讲解#pragma的使用方法
    目录一、#pragma 简介二、#pragma message三、#pragma once四、#pragma pack五、小结一、#pragma 简介 #pragma 用于指示编译器...
    99+
    2024-04-02
  • C语言详细讲解qsort函数的使用
    目录qsort1.int型2.float型3.struct型qsort 功能:Performs a quick sort.(快速排序)参数:void qsort( void *bas...
    99+
    2024-04-02
  • C语言超详细讲解指针的使用
    目录指针概述自身类型指向类型代码例子数值型指针字符型指针单字符字符数组字符串型指针字符数组总结指针概述 C语言中指针也可以认为是一种类型,不同于数值型和字符型的类型。推演过去指针变量...
    99+
    2024-04-02
  • C语言 详细讲解#pragma的使用方法
    #pragma是C语言中的预处理指令,用于告诉编译器在编译过程中采取特定的行为。以下是#pragma的使用方法的详细讲解:1. #p...
    99+
    2023-08-08
    C语言
  • C语言详细分析讲解struct与union使用方法
    目录一、struct 的小秘密二、结构体与柔性数组三、C语言中的 union四、小结一、struct 的小秘密 C语言中的 struct 可以看作变量的集合 struct ...
    99+
    2024-04-02
  • C语言详细讲解if语句与switch语句的用法
    目录一、if 语句二、switch 语句三、错误提示一、if 语句 格式: if(写条件){输出内容}条件为真运行这个。 else {输出内容}否则输出这个。 代码: #includ...
    99+
    2024-04-02
  • C语言详细讲解const的用法
    目录一、int const a / const int a二、const int(*p)/int const(*p)三、int*const p四、const用于函数的地址传递参数一、...
    99+
    2024-04-02
  • C语言详细讲解注释符号的使用
    目录一、注释规则二、注释中一个有趣的问题三、教科书型注释四、迷惑型的注释五、忽悠型注释六、搞笑型注释七、漂亮的程序注释八、小结一、注释规则 编译器在编译过程中使用空格替换整个注释字符...
    99+
    2024-04-02
  • C语言详细讲解位运算符的使用
    目录一、位运算符分析二、小贴士三、位运算与逻辑运算四、小结一、位运算符分析 C语言中的位运算符 位运算符直接对 bit 位进行操作,其效率最高。 &按位与|按位或^按位异或~...
    99+
    2024-04-02
  • C语言超详细讲解getchar函数的使用
    目录一、getchar 函数二、缓冲区1、什么是缓冲区2、为什么要存在缓冲区3、缓冲区的类型4、缓冲区的刷新三、getchar 函数的正确使用1、getchar 的换行问题2、get...
    99+
    2024-04-02
  • C语言详细讲解while语句的用法
    目录while语句格式例题1例题2例题3while语句格式 格式: while(表达式){    语句块} 1、先执行while(表达式),如条件为真执行语句块;...
    99+
    2024-04-02
  • C语言超详细讲解结构体与联合体的使用
    目录结构体offsetof-宏位段枚举联合体(共用体)结构体 结构体内存对齐问题: 当我们在计算结构体的大小时,我们便需要清楚的知道结构体内存对齐是什么。 存在内存对齐的原因可细分为...
    99+
    2024-04-02
  • C语言超详细讲解指针与结构体
    目录本节目标初识指针1、内存与地址2、变量的地址3、指针变量4、指针的使用5、指针变量的大小初识结构体1、什么是结构体2、结构体的定义3、结构体的使用本节目标 理解内存与地址的相关概...
    99+
    2024-04-02
  • C语言详细讲解逻辑运算符的使用
    目录一、&& 与 II 分析二、!分析三、小结一、&& 与 II 分析 下面的程序运行结束后,i, j,k 的值分别为多少? #include <...
    99+
    2024-04-02
  • C语言 超详细总结讲解二叉树的概念与使用
    目录1.二叉树的概念及结构 2.二叉树链式结构的实现1.二叉树的概念及结构  ①概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别...
    99+
    2024-04-02
  • C语言详细讲解循环语句的妙用
    目录一、循环语句分析二、do ... while 语句的循环方式三、while 语句的循环方式四、for 语句的循环方式五、break和 continue 的区别六、do 和 bre...
    99+
    2024-04-02
  • c语言压缩文件详细讲解
    目录c语言压缩文件一、单文件压缩二、多文件压缩三、多文件异步压缩四、压缩文件夹c语言压缩文件 话说当今压缩市场三足鼎立,能叫上名号的有zip、rar、7z。其中zip是压缩界的鼻祖,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作