朝花夕拾 · C语言 | 多文件篇

全局变量使用:

1.在源文件中定义全局变量;

2.如果只是在定义该全局变量的文件中使用该全局变量,可以不声明;

3.如果要在一个外部的源文件中使用该全局变量,则该变量必须被声明;

4.在对应的头文件中加extern关键字声明,头文件中全局变量只能声明不能初始化,定义应在.c文件

        在头文件的声明里,函数默认为extern,编译器会自动加上。

  1. 预处理阶段(只认 #include
    预处理器看到 #include "ji.h",把 ji.h 里的 int get_ji(int num1, int num2); 复制过来。看到 #include "shang.h",把 shang.h 里的声明复制过来。
    此时,main.c 里只有“声明”(知道有这两个函数),但没有“定义”(不知道这两个函数具体怎么算)。

  2. 编译 + 链接阶段(关键区别)
    如果只输入 gcc main.c,编译器会报错:undefined reference to 'get_ji' 和 undefined reference to 'get_shang'。因为编译器只编译了 main.c,找不到 get_ji 和 get_shang 的具体代码(定义)。头文件只是“承诺”这些函数存在,但真正的“兑现”需要靠链接器把对应的 .c 文件编译结果合并进来。

Makefile:管理代码工程的编译和链接,由make工具进行解释,实现一键化工程的编译和链接。

文件:Makefile/makefile(文件/脚本)

语法:

          目标文件:依赖文件       

                     编译规则

目标文件:a.out

依赖文件(生成目标文件所依赖的源文件):main.c  sum.c  sub.c ......

编译规则:gcc main.c sub.c sum.c  ( -o a.out)

编译代码:make(默认只匹配makefile中的第一个参数)

a: 01_a
    gcc 01_a -o a -lpthread
b: 01_b
    gcc 01_b -o b
clean:
    rm a b

make a匹配到a则执行 gcc 01_a -o a -lpthread
make b匹配到b则执行 gcc 01_b -o b -lpthread
make clean匹配到clean则执行 rm a b

Makefile中的变量:

1.自定义变量

OBJ = a.out    //定义Makefile的变量OBJ,并为其赋值
SRC = main.c sum.c sub.c 
== SRC += main.c
   SRC += sum.c
   SRC += sub.c
CC = gcc
INCLUDE = ../include    //include"xxx"双引号里的内容只能在当前路径下访问,所以使用-I指明头文件路径
LIBS = ../lib


$(OBJ) :$(SRC)    //变量的引用:$()
    $(CC) $(SRC) -o$@ -I$(INCLUDE) -L$(LIBS) -lm
                 //-o $(OBJ) 给自定义变量起名
                 //-I头文件路径 -L指定库的位置
                 //-lm链接数学库

==
    a.out: main.c sum.c  sub.c 
    gcc main.c sub.c sum.c 


自定义伪代码:
clean:
    rm $(OBJ)    //表示clean实现移除文件功能
                    //用 make clean调用

   =:给变量赋值

   +=:在原变量值的基础上再增加新增

   ?=:  若变量之前没有被赋值则赋值,若之前被赋过值则保留原值

注意:只改头文件的话make并不会检测到头文件的修改,所以修改头文件后,需clean重新生成可执行文件,而若没在头文件中声明函数,则有时可能发生段错误。

2.系统变量

可直接使用:

$@:表示目标文件

$^ :表示所有依赖文件

$<:表示第一个依赖文件

3.

tar -cvf 文件夹.tar 文件夹 

压缩文件夹

基于iTransformer-BiGRU-KAN多模型融合的滚动轴承剩余寿命预测研究(Python代码实现)内容概要:本文提出了一种基于iTransformer-BiGRU-KAN多模型融合的滚动轴承剩余寿命预测方法,旨在通过结合多种先进深度学习模型的优势,提升在复杂工况下的预测精度与鲁棒性。该方法利用iTransformer捕捉长期时间序列中的全局依赖关系,通过BiGRU模型提取双向时序特征,最后引入KAN(Kernel Attention Network)增强非线性映射与关键特征的自适应加权能力,实现对轴承退化过程的精准建模。文中详细介绍了模型架构设计、训练流程及在公开数据集上的实验验证,结果表明该融合模型相比单一模型在预测精度和稳定性方面均有显著提升。; 适合人群:具备一定机器学习与深度学习基础,从事设备故障诊断、工业大数据分析或智能运维相关领域的研究人员及工程技术人员,尤其适合研究生及以上学历或有相关项目经验的专业人员。; 使用场景及目标:①应用于工业设备状态监测与预测性维护系统中,实现对滚动轴承等关键部件剩余寿命的精准预测;②为复杂时间序列回归任务提供多模型融合的设计思路与技术参考;③推动深度学习在智能制造与工业物联网领域的落地应用。; 阅读建议:建议读者结合Python代码实现部分,深入理解各子模型的接口设计与融合逻辑,重点关注特征融合机制与注意力权重的可视化分析,以便在实际项目中灵活调整与优化模型结构。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 DE1-SOC开发套件是采用Altera的Cyclone V SoC FPGA构建的一个硬件平台,它为嵌入式系统的开发者们构建了一个融合了处理器与FPGA功能的集成实验平台。这份用户手册系统性地阐述了运用这款开发板开展项目开发及学习的方法。 第1章:DE1-SOC开发套件 在这一章节中,主要阐述了DE1-SOC开发套件的核心构成,包括用户在采购时可以预见的包装构成。通常,开发套件会包含DE1-SOC主板、电源适配器、连接线缆以及必须的软件和文档光盘。除此之外,用户还可以了解到如何获取帮助和支持,以便在遭遇问题时能够迅速处理。 第2章:DE1-SOC主板介绍 本章深入剖析了DE1-SOC主板的设计布局和构成组件。开发者可以认识到主板上的各种物理构成部分,例如GPIO接口、存储器、处理器等。同时,通过板级的模块图示,用户能够掌握各个模块的功能及其相互间的连接联系,这对于把握系统的整体构造非常关键。 第3章:使用DE1-SOC主板 在这一部分,用户将学习到如何设置和运用DE1-SOC主板。介绍了FPGA配置模式的设定,这是将用户设计加载至FPGA的必要步骤。随后,详细说明了如何配置Cyclone V SoC FPGA,这个过程可能需要运用硬件描述语言(比如Verilog或VHDL)编程和Quartus II这类集成开发环境。接下来,本章还涵盖了板级状态组件,这些组件展示了FPGA和系统的运行情形,对于故障诊断十分有益。此外,板上复位组件的应用方法也在此部分提供,确保用户能够准确控制系统的启动和重置。关于时钟电路的说明,解释了如何管理和生成不同频段的时钟信号,这对构建高性能数字系统来...
电商平台积累了海量商品评论,蕴含用户对产品各属性的真实态度,是商家优化产品的重要数据资产。然而评论规模庞大、口语化严重、情感表达复杂,传统整体级情感分析只能判断好评差评,无法回答用户对续航、拍照、性价比等具体属性持何种态度。本文设计了电商评论情感分析与产品口碑挖掘系统,以细粒度属性级情感分析为核心,结合主题模型实现口碑与痛点挖掘。 系统采用评论采集-预处理-情感分析-主题挖掘-口碑报告五模块架构:基于Jieba分词与停用词过滤构建规范语料;情感分析以BERT为基础构建属性级情感分析模型,抽取性价比、续航、拍照、外观做工等十类属性及其情感极性;主题挖掘以LDA挖掘隐含主题并定位核心口碑与用户痛点;口碑报告生成包含口碑分布、主题占比、痛点排序与改进建议的分析报告。 在公开数据集(20万条手机数码评论,属性标注集2万条)上实验:整体情感分类准确率91.2%,属性级情感分类89.6%、F1 0.87,相对朴素贝叶斯、LSTM与整体级BERT分别提升13.4、7.2与4.5个百分点;观点抽取召回率76.5%;LDA识别性价比、续航、拍照等八个核心主题,定位续航不足、发热、物流慢三大痛点,并输出产品间口碑对比与改进建议。处理20万条评论耗时16.5分钟。 本文创新点在于将细粒度属性级情感分析(ABSA)引入电商口碑挖掘,以属性-情感对刻画用户对产品各维度态度,并结合LDA实现口碑定位-痛点挖掘-建议生成闭环,为商家产品优化与运营决策提供可量化数据支撑,可推广至食品、服饰、家电等更多品类。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论 第3章 系统需求分析 第4章 系统总体设计 第5章 系统详细设计与实现 第6章 系统测试与分析 第7章 总结与展望 参考文献 附件-实现指南
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值