C-#line和#error

1、

1)源代码:

test2.c

#line 1
int main(void){
printf("line 1\n");
printf("line 2\n");
printf("line 3\n");
printf("line 4\n");
printf("line 5\n");
printf("line 6\n");
printf("line 7\n");
printf("line 8\n");
#include "test1.c

 test1.c

 

#line 9 "test2.c"
#define LINUX
#ifdef WIN32
  printf("win32\n");   
#elif defined LINUX
  printf("linux %d %s\n",__LINE__,__FILE__);        
#else
  #error no flag define 
  //如果LINUX和WIN32没有定义,#error会显示错误信息,然后停止编译
#endif
}

  2)运行结果:

mysea@mysea-pc:~/test$ ./test2

line 1

line 2

line 3

line 4

line 5

line 6

line 7

line 8

linux 13 test2.c


 

2、#error表示停止编译,显示错误信息

3、#line 直接指定下一行的行号及文件名

1)指定行号

#line n

2)指定文件名和行号

#line n "filename"

4、源代码的#include "test1.c"和#line 9 "test2.c"表示:test2.c和test1.c实质属于一个C程序:test2。

1)注意这只是标注,如果要在编译时把test1.c包括进来,必须加上#include "test1.c

 

 

2)编译时,编译test2

 

 

 

mysea@mysea-pc:~/test$ gcc -o test2 test2.c

 


 

C/C++预定义宏、 #line 、#error、 #pragma和泛型选择 _func_ _C99 标准提供一个名为_ _func_ _的预定义标识符,它展开为一个代表函数名的字符串(该函数包含该标识符)。那么,_ _func__必须具有函数作用域,而从本质上看宏具有文件作用域。因此,_ _func_ _是C语言的预定义标识符,而不是预定义宏。下面程序中使用了一些预定义宏和预定义标识符。注意,其中一些是C99 新增的,所以不支持C99的编译器可能无法识别它们。如果使用GCC,必须设置-std=c99或-std=c11。 阅读详情

相关推荐

C语言后记-12 条件编译命令分析:#error #line #pragma # 和## 操作符使用

#error 和 #line 使用分析 #error 用于生成一个编译错误消息 用法: #error message (message不需要使用双引号) #error 编译指示字用于自定义程序特有编译错误消息 类似的,#warn...

CodeAllen嵌入式 3万+

[linux] #line 指令

\#line 指令告诉与处理器将编译器内部存储的行号和文件名更改为给定的行号和文件名。 语法: #line num [filename] 示例 main.c: #include <stdio.h> int add(int x, int y) { printf("%s: %d\n", __FILE__, __LINE__); return x + y; } #lin...

xuchdong的博客 4064

GB28181安防平台未授权访问漏洞:原理、复现与修复指南

未授权访问漏洞是Web安全中常见的访问控制缺陷,其本质在于应用在提供对敏感功能或数据的访问前,未能对请求者的身份和权限进行充分验证。从技术原理上看,这类漏洞常源于拦截器配置错误、安全注解遗漏或自定义校验逻辑缺陷,导致本应受保护的API接口被意外暴露。在工程实践中,此类漏洞危害巨大,攻击者无需登录即可直接访问系统核心接口,可能引发敏感信息泄露、权限提升甚至系统接管。尤其在安防监控、物联网管理平台等场景中,一旦涉及用户管理接口(如`/api/user/**`),风险会急剧放大。本文以GB28181视频监控管理平

weixin_30271335的博客 439

C #line

#line:改变程序行编号方式和文件名的指示。程序行一般是按1,2,3,...编号的。 #line 行号 其中行号必须是1~32 767之间的整数,此指示导致程序后面的行被编号为n,n+1,n+2,... #line 行号 "文件名" 其中行号和文件名说明来源的行号和文件名,指示后面的行会被认为是来自文件,行号由n开始。 #line指示一种作用是改变__LINE__,__FILE__宏的值。...

dragon_cdut的博客 1032

汽车轮胎动平衡背后的秘密:如何用惯性主轴原理消除方向盘抖动

本文深入解析了汽车轮胎动平衡的核心原理,即利用惯性主轴原理消除高速行驶时的方向盘抖动。文章从方向盘抖动的现象出发,阐释了动不平衡产生的物理本质,并详细介绍了如何通过动平衡机测量、计算与校正,使轮胎-轮毂系统的实际旋转轴回归其惯性主轴,从而实现稳定运转。

grafana6viz的博客 347

Unity开发微信小游戏,使用Addressables管理游戏资源(本地进行远程测试)

快速构建Unity微信小游戏 使用Addressables管理游戏资源 使用小皮助手在本地进行远程资源加载测试

the_vnas的博客 6391

#error 和 #line 使用分析

1、#error的用法 #error用于生成—个编译错误消息 用法 : #error message (message不需要用双引号包围) #error编译指示字用于自定义程序员特有的编译错误消息 类似的,#warning用于生成编译警告。 #error是一种预编译器指示字 #error可用于提示编译条件是否满足 ...

洋葱汪的博客 804

向量库深度解析:选型、索引原理与生产实践

本文系统解析五大主流向量库(pgvector、Milvus、Weaviate、ChromaDB、Faiss)的定位、优缺点与适用场景,深入拆解FLAT、IVF、HNSW等核心索引原理,并重点分析Milvus的Compaction机制。针对数据治理场景,提供精准选型建议:中小规模优先pgvector或Weaviate,超大规模选择Milvus,开发测试推荐ChromaDB。核心索引推荐HNSW,兼顾检索速度与召回率。全文从理论到实践,为开发者提供清晰的向量库选型逻辑与生产落地指南。

a123147abc的博客 361

C语言使用line出现错误,C语言#error和#line使用方法

C语言#error和#line使用方法一、使用方法:1、#error方法:2、#line方法:二、代码测试:1、#error#include #ifdef __cplusplus#error this file should be processed with C++ Compiler#endifclass CppClass{private:int m_value;public:CppClass(...

weixin_39961636的博客 1067

FakeNewsGPT4:通过知识增强的大规模视觉语言模型推进多模态假新闻检测

当前,多模态假新闻的大量涌现导致了显著的分布差异,这一现状亟需我们开发具备广泛适用性的检测器。然而,现有假新闻检测器因特定领域内的训练方式,难以有效获取开放世界中的事实信息。这种训练的封闭性限制了传统检测器的能力,特别是在面对跨域假新闻时,其表现往往不尽如人意。具体而言,开放世界中的假新闻在两个方面具有显著的分布差异:一方面,其操纵内容多种多样,新闻的任一部分都可能受到创意策略的操控;另一方面,真实背景复杂多变,不同地区的新闻背景和主题焦点存在显著差异。

qq_52053775的博客 822

Python爬虫实战:爬取小红书数据做爆款分析,我破解了签名加密+移动端反爬(附完整代码)

爬取小红书数据的核心,不是“简单的HTTP请求”,而是“理解移动端接口的加密逻辑和反爬规则”——从x-s/x-t签名破解到移动端UA伪装,再到行为模拟,每一步都是对移动端爬虫的深度理解。这套方案的价值在于,不仅能稳定抓取小红书数据,还能从数据中拆解出有价值的爆款特征,真正把“数据”变成“洞察”。对程序员来说,小红书爬虫不仅是技术练手,更是了解新媒体平台数据逻辑的窗口。希望这篇分享能帮到做新媒体分析或爬虫进阶的小伙伴,也欢迎在评论区交流小红书反爬和爆款分析的更多技巧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2058

C程序中的#line意义何在

在学习一些项目源代码时,看到了大量的#line定义,小人不才,语法搜搜是大概懂了,可问个为什么,却难道了自己。#line是C语言预处理器,语法格式为: #line number “filename” 如 #line 123 “file.c” 意思就是改变__LINE__和__FILE__宏内容。当在程序中使用这两个宏的时候,就会因为#line的定义而改变,例子很简单,我就不列举了,不明白的朋友

黄黄臭臭的便便到铜钱 5634

项目管理 Agent:进度追踪与风险预警 Harness

我们先从LangChain的Agent定义说起:Agent是一个能感知环境、自主决策、调用工具、执行动作、迭代反思的智能实体。而「项目管理全自主Agent」,就是把Agent的核心能力和项目管理的五大过程组(启动、规划、执行、监控、收尾)深度结合,聚焦执行监控阶段的两个核心痛点:进度偏差自动化计算、风险信号自动化识别与预警的专门化Agent。全感知(Omnisensing):能从。

AI架构师小马 516

C中#error和#line预处理

#error用于自定义一条编译错误 #warning用于自定义一条编译警告信息 #error和#warning常用于条件编译的情形 #line用于强制指定新的行号和编译文件名 一、#error预处理 #error预处理指令的作用是:编译程序时,只要遇到#error就会生成一个编译错误提示信息,并停止编译。其语法格式为: #error error-message 注意,宏串e...

wuwuku123的博客 520

基于imx6ull平台opencv的图像采集、ffmpeg推流和Windows端拉流(多线程)

本文档是针对imx6ull平台`opencv`的图像采集、ffmpeg推流和Windows端拉流。首先创建一个线程`opencv`通过摄像头采集视频图像,接着再创建两个线程,其中一个线程获取采集的视频图像送给ffmpeg服务,另一个线程用于获取采集的视频图像并处理,处理完并在显示屏上显示,详细的流程请参看如下。

程小二的博客 1607

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【C语言进阶剖析】23、#error 和 #line 使用分析

1 #error 的用法 #error 用于生成一个编译错误消息 用法如下: #error 编译指示字用于滴定仪程序员特有的编译错误消息,类似的,#warning 用于生成编译警告 ...

桑凯旋的博客 1242

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C语言#error和#line使用方法

C语言#error和#line使用方法一、使用方法:       1、#error方法:                   2、#line方法:           二、代码测试:       1、#error  #include <stdio.h> #ifdef __cplusplus #error this file should be processed with C+...

liuchunjie11的博客 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

error在c语言的用法,C语言进阶:23、#error和#line的用法

#error用于生成一个编译错误消息用法:#error messagemessage不需要用双引号包围#error编译指示字用于自定义程序员特有的编译错误消息,类似的,#warning用于生成编译警告。#error是一种预编译指示字,可用于提示编译条件是否满足#ifndef __cpluscplus //C++内置的宏 通过检测这个宏的存在,来进行错误提醒。#error This file s...

weixin_39886929的博客 1100

【C】23. #error 和 #line 使用分析

#error分析 #error 用于生成一个编译错误信息 用法: #error message message 不需要用双引号包围 #error 是一种预编译器指示字,可以提示编译条件是否满足。 (编译过程中任意错误信息意味着无法生成最终稿的可执行程序) #include <stdio.h> #ifndef __cplusplus #error This...

zhabin0607的博客 170

C(#error和#line)

用法 #error用于生成一个编译错误消息 #error message message 不需要用双引号包围 #error是一种预编译器指示字 #error可用于提示编译条件是否满足 实例: #ifndef _cplusplus #error This file should be processed with C++ compiler. #endif #...

随心小记 601

C语言进阶剖析 23 #error 和 #line 使用分析

#error 的用法 #error 用于生成一个编译错误信息 用法: #error message &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;○ message 不需要用双引号包围 #error 编译指示字用于自定义程序员特有的编译错误消息。 #warning 用于生成编译警告。 #error 是一种预编译器指示字 error 可用于提示编译条件是否满足 #ifndef __cplu...

Linux Openharmony Android Graphics Stack! 885

C语言学习笔记--#error 、 #line 和 #pragma 的使用

1. #error 的用法 (1)#error 是一种预编译器指示字,用于生成一个编译错误消息 (2)用法:#error message //注意:message 不需要用双引号包围 (3)#error 编译指示字用于自定义程序员特有的编译错误消息。类似的,#warning 用于生成编译警告消息 (4)#error 可用于提示编译条件是否满足。编译过程中的任何错误意味着无法...

adl30141的博客 358

C之 #error 和 #line(二十一)

我们今天来讲下 C 语言中的两个比较偏僻的知识点,之所以说偏僻是因为在平时的代码中我们见得很少。首先来说下 #error,它是用于生成一个编译错误消息。用法如下:#error message;注意 message 不需要用双引号包围。#error 编译指示字用于自定义程序员特有的编译错误消息,类似的,#warning 就用于生成编译警告的(但它可以编译成功,生...

weixin_34190136的博客 109

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

本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录。#error和#warning常应用于条件编译的情形。#warning用于自定义一条编译警告信息。#line用于强制指定新的行号和编译文件名。#error用于自定义一条编译错误信息。

qq_35429166的博客 677

C语言-第18课 - #error和#line

第18课- #error和#line #error的用法 #error用于生成一个编译错误消息,并停止编译。 用法:#error message 注:message不需要用双引号包围。 #error编译指示字用于自定义程序员特有的编译错误消息类似的,#warning用于生成编译警告,但不会停止编译。 例子:自定义错误消息 #include <stdio.h&gt...

weixin_30699741的博客 113
上一篇: linux-curses-窗口移动光标
下一篇: LINUX-curses-菜单
deepfuture
博客等级 码龄17年 210粉丝 1287原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值