C语言 DAY07:预编译,宏,选择性编译,库(静态库,动态库)
声明与定义分离
声明:将声明单独封装成一个以.h为后缀名的头文件
定义:将定义的变量,函数,数组所在的源文件单独封装成一个.c文件。其实就是在源文件基础上将定义过的所有东西的声明分离出去就是了。
注意:1.声明的.h文件名和.c结尾的源文件名要相同、
2.一个源文件对应一个头文件
1.预编译
1.程序编译
1.预编译
展开头文件
定义宏
选择性编译
注意:
展开头文件必须以#开头
2.编译
3.汇编
4.链接
2.include
作用:展开头文件
语法:
#include<> 尖括号代表的头文件是在系统指定文件中找该库,具体在lib/或者在usr/lib文件中找
#include"" "" 代表的是自己定义的库,会先在当前目录文件夹下找,如果找不到再在系统指定文件夹中找
3.宏(define)
1.定义不带参的宏
define pi(宏名) 值
注意:1.定义不带参的宏,值可以不写
2.不带参的宏定义不要后面加分号
3.只能在当前文件中使用
4.在宏定义后,取消定义前使用
例子:
2.定义带参的宏
define 宏名(形参) a + b(体) ;
3.注意:
1.结尾要加分号
2.括号中可以加形参,后面运算表达式不能省
3.形参没有数据类型
4.不止在当前文件中使用,可以在别的文件中使用
4.带参和不带参的宏的区别:
宏:在预编译时对其进行替换,如果一个文件中多次使用宏,那意味着要替换多次,此时就需占用内存,所以占据的内存多
产生的预编译时期
占内存多
6.总结
宏就是在预编译时期对其进行替换
不带参宏替换的是一个值
带参宏替换的是一段代码
4.选择性编译
作用:选择代码是否被编译
语法:

2.库
作用:
也叫代码库,可以将一些目标文件放在一起合并方便使用
分类:
1.静态库
2.动态库
动态库与静态库的区别:

注意:
程序中引入的文件在动态库与静态库同时存在两份
静态编译程序引入静态库中的该文件
编辑命令:
静态库:
gcc -static 源文件名 - o 生成的可执行文件名
动态库:
gcc 源文件名 - o 生成的可执行文件名
静态库:
制作:
gcc -c 源文件名.c -o 生成的二进制文件名.o
ar rc lib静态库名称.a 生成的二进制文件名.o
动态库
制作:
命令:
gcc -shared 源文件名 -o 生成的动态库文件名.so
使用:
情况1:使用动态库的文件与动态库在同一文件夹下
命令:
情况2:使用静态库的文件与静态库不在同一文件夹下
命令:
情况3:静态库文件与对应的头文件在系统文件夹下
命令:
gcc 源文件名 -l 静态库名 -o 生成的可执行文件名
注意:
运行中出现动态库找不到问题,需要将动态库所在目录导入用户环境变量
![]()
export LD_LIBRARY_PATH=库文件所在路径:$LD_LIBRARY_PATH
相关文章:
C语言 DAY07:预编译,宏,选择性编译,库(静态库,动态库)
声明与定义分离 声明:将声明单独封装成一个以.h为后缀名的头文件 定义:将定义的变量,函数,数组所在的源文件单独封装成一个.c文件。其实就是在源文件基础上将定义过的所有东西的声明分离出去就是了。 注意:1.声明的…...
[EFI]asus strix b760-i 13900F电脑 Hackintosh 黑苹果efi引导文件
硬件型号驱动情况主板 asus strix b760-i 处理器 I9 13900F 已驱动内存crucial ddr5-5200 64gb(32gb*2)(overclock 5600)已驱动硬盘 WD black sn850 500g*2 已驱动显卡rx570已驱动声卡Realtek ALCS1220A已驱动网卡Intel I225-V 2.5 Gigabit Ethernet已驱动无线网卡蓝牙Fevi T91…...
力扣383.赎金信
原题链接:383.赎金信 根据题意得出,需要判断第一个字符串内的字符有没有都在第二个字符串内出现(会有重复字符),并且范围限制在26个英文小写字母 此时可以考虑用一个数组map 作哈希法映射操作 先将遍历第一个字符串,并让每个字符…...
CORS的原理以及在Node.js中的使用
在前端浏览器中的JavaScript代码发起HTTP请求到服务器的Node.js程序,CORS(跨域资源共享)会在以下几个步骤中发挥作用: 前端JavaScript代码发起请求: 前端浏览器中的JavaScript代码使用XMLHttpRequest对象或Fetch API等…...
kotlin实现单例模式
kotlin实现单例模式,大体分为两种方式,一种饿汉式单例模式,一种懒汉式单例模式。 1.饿汉式单例模式 在类前面加上object关键字,就实现了饿汉式单例模式: object singletonDemo { }在kotlin中,使用这种方式…...
【Java】LinkedList 集合
LinkedList集合特点 LinkedList 底层基于双向链表实现增删 效率非常高,查询效率非常低。 LinkedList源码解读分析 LinkedList 是双向链表实现的 ListLinkedList 是非线程安全的(线程是不安全的)LinkedList 元素允许为null,允许重复元素Linked…...
MySQL-Galera-Cluster集群详细介绍
目录 一、什么是Mysql集群?1.单节点mysql存在的常见问题2.mysql集群介绍3.Mysql集群的优点和风险 二、Mysql集群的一些疑问1.mysql的AB复制和Galera Cluster有什么区别?2.什么情况下适用AB复制,什么情况下使用Galera cluster?3.可…...
JavaScript从入门到精通系列第二十六篇:详解JavaScript中的Math对象
大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥连接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…...
u盘直接拔出文件丢失怎么找回?u盘文件恢复办法分享!
u盘作为一种便捷的数据存储设备,被广泛地使用。通过u盘,我们可以在不同设备之间轻松传输文件,然而有时候,我们可能因为匆忙或疏忽并未安全弹出u盘,而是直接将u盘拔出,进而导致重要文件丢失,u盘直…...
rust学习-LinkedList
介绍 A doubly-linked list with owned nodes. 自有节点的双向链表 pub struct LinkedList<T, A = Global> whereA: Allocator, {/* private fields */ }使用 Vec 或 VecDeque 几乎总是更好,因为基于数组的容器通常更快、内存效率更高,并且可以更好地利用 CPU 缓存 …...
搭上直播快车,文旅迎来了更大爆发期?
“直播累计观看人数1083万人次,同期在线峰值10万人,抖音平台销售额800万元,荣登食遍天下榜第一名”。 10月28日,“东方甄选看世界”无锡专场直播落幕,又创造了新成绩,“文旅直播”这一新带货模式的发展可行…...
【智能座舱系列】- 深度解密小米Hyper OS,华为HarmonyOS区别
上一篇文章《小米的澎湃OS到底牛不牛?与鸿蒙系统之间差距有多大》,从多个方面比较了小米Hyper OS 与 华为HarmonyOS的区别,本篇文章继续从架构层面深度解读两者本质的区别。 小米澎湃OS是“以人为中心,打造人车家全生态操作系统”,该系统基于深度进化的Android以及自研的V…...
kafka-consumer-groups.sh
通过 kafka-consumer-groups.sh 脚本查看或变更消费组的信息。 查看消费者组信息 ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list 查看指定消费者组的消费位移 ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group g…...
数据仓库-拉链表
在数据仓库中制作拉链表,可以按照以下步骤进行: 确定需求:首先明确需要使用拉链表的场景和需求。例如,可能需要记录历史数据的变化,以便进行时间序列分析等。设计表结构:在数据仓库中,拉链表通…...
【Docker】一些可以直接用的Docker环境
这里罗列一些打包的镜像,方便直接使用。 cu11.6ubuntu18.04 docker push kevinchina/deeplearning:cu11.6ubuntu18.04 FROM nvidia/cuda:11.6.2-cudnn8-devel-ubuntu18.04 RUN apt-get update && apt-get install -y wget git vim curl RUN wget http://…...
Unity2D中瓦片地图的创建与绘制教程
Unity2D中瓦片地图的创建与绘制 素材切割创建地图创建瓦片绘制地图瓦片调色板画笔拓展素材资源链接 素材切割 选中以下素材,以Tiles为例(素材链接在文章最下方) 修改素材属性。 将Sprite Mode属性改为Multiple多张(不然切割不了&…...
现代的简洁,诠释轻奢的精致!福州中宅装饰,福州装修
轻奢风是一种生活新时尚 优雅、低调、舒适、简单,不断地推陈出新 站在时尚的前沿,引领潮流 中宅装饰集团轻奢风格产品 追求高品质生活细节 以设计精致的空间构造营造出 一种优雅、时尚生活氛围 将低调奢华之美注入现代家居设计中 客厅|The Sitt…...
运用ChatGPT辅助新手学习躺赢者PRO飞控二次开发示例(2023年10月28日)
运用ChatGPT辅助新手学习躺赢者PRO飞控二次开发示例(2023年10月28日) 1、以飞控预设的飞行任务demo中void flight_subtask_1(void)代码为例分析一下变量flight_subtask_cnt的作用? //逆时针转动90度,完成后降落 void flight_sub…...
【Java】HashCode方法重写注意事项
HashCode方法 HashCode方法是属于Object父类提供的方法,HashCode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable提供的哈希表HashCode的常规协定是:在Java应用程序执行期间,在…...
039-第三代软件开发-PDF阅读器
第三代软件开发-PDF阅读器 文章目录 第三代软件开发-PDF阅读器项目介绍PDF阅读器1 初始化PDF view2 qml 中使用3 创建模块 关键字: Qt、 Qml、 pdf、 LTDev、 本地 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Met…...
猫抓浏览器插件:网页资源嗅探与下载的终极解决方案
猫抓浏览器插件:网页资源嗅探与下载的终极解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾在浏览网页时,看到精彩的视频、音频或图片资源,却苦于无…...
Milvus向量数据库Docker安装避坑指南:从配置到可视化工具Attu的完整流程
Milvus向量数据库Docker安装避坑指南:从配置到可视化工具Attu的完整流程 当开发者第一次接触向量数据库时,往往会遇到各种意想不到的"坑"。作为一款开源的向量数据库,Milvus因其高性能和易用性而广受欢迎,但在Docker环境…...
# 发散创新:边缘容器中的轻量级服务部署实战与优化策略在云计算向边缘计算演进的浪潮中,**边缘容器技术**正成
发散创新:边缘容器中的轻量级服务部署实战与优化策略 在云计算向边缘计算演进的浪潮中,边缘容器技术正成为构建低延迟、高可用应用的核心基础设施。相比传统云端Kubernetes集群,边缘容器更强调资源受限环境下的高效调度、快速启动和故障自愈能…...
大模型应用开发:从Demo到生产,小白程序员必看!收藏这份实战指南
本文深入剖析了将大模型应用从原型阶段推向生产环境所面临的关键挑战,涵盖数据处理(格式多样性、切块策略、数据更新)、检索质量(找不到、找不准、找太多)、生成阶段(幻觉、引用溯源)、规模化工…...
OpCore-Simplify:如何用四步自动化流程解决黑苹果配置的三大核心挑战
OpCore-Simplify:如何用四步自动化流程解决黑苹果配置的三大核心挑战 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 对于黑苹果爱好者来说…...
硬盘监控与健康管理:DiskInfo全方位使用指南
硬盘监控与健康管理:DiskInfo全方位使用指南 【免费下载链接】DiskInfo DiskInfo based on CrystalDiskInfo 项目地址: https://gitcode.com/gh_mirrors/di/DiskInfo 在数字化时代,硬盘故障可能导致珍贵数据永久丢失。DiskInfo作为一款基于Crysta…...
当Navicat密码遗忘时:开源解密工具如何重建数据库连接通路
当Navicat密码遗忘时:开源解密工具如何重建数据库连接通路 【免费下载链接】navicat_password_decrypt 忘记navicat密码时,此工具可以帮您查看密码 项目地址: https://gitcode.com/gh_mirrors/na/navicat_password_decrypt 数据库连接中断的三大痛点场景 场…...
ElasticSearch查询集群及设置
Elasticsearch查询集群API示例 查看集群状态及监控 参考资料 https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-health.html https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-nodes-stats.html 查看集群状态 健康状态 curl -XGE…...
收藏!2026非科班/转行小白必看:3步切入AI大模型,月薪30w+实战路径
2026年的职场赛道,AI大模型依旧是绝对的“黄金风口”。 最新行业报告显示,AI相关岗位需求逆势增长37%,薪资领跑全行业,大厂校招起薪普遍突破25k。但一个残酷的现实是: 太多非科班、半路转行的程序员,还在门…...
1Panel v2.0.5及以下版本紧急加固指南:除了升级,这3个临时措施也能防住RCE
1Panel高危漏洞应急防护实战:3种临时方案守护服务器安全 当安全警报拉响时,运维团队往往面临两难选择:立即升级可能影响业务连续性,不升级则暴露在严重威胁之下。针对近期曝光的1Panel远程代码执行漏洞(CVE-2025-54424…...
