当前位置: 首页 > news >正文

「C 语言」extern关键字

在 C 语言中,关键字 extern 是用来告诉编译器,这个变量 OR 函数在其他文件中已有定义,可在当前文件中使用

当我们定义了一个全局变量 OR 函数时,它就已经具有了外部链接的属性,我们只需要通过在引用该变量的文件中用 extern 关键字来声明它们的存在即可

通常,使用 extern 关键字有两种情况,

  1. 声明全局变量
    例如,在 a.c 中定义了一个全局变量 int global_var,如果 b.c 想要使用这个全局变量,那么就需要使用 extern 关键字进行声明,如 extern int global_var
  2. 声明函数原型
    例如,在 a.c 中定义了一个函数 void foo(),如果 b.c 想要调用这个函数,那么同样需要使用 extern 关键字进行声明,如 extern void foo()

总结一下,extern 关键字的作用就是在当前文件中声明一个已经在其他文件中定义好的变量 OR 函数,以便当前文件能够正常使用

这从一定程度上替代了 .h 文件,我们不必再通过 #include 一整个 .h 文件来使用极个别的外部变量 OR 函数,而是通过 extern 关键字精确地导入我们想要的东西。这样的好处,即是可以减少 .h 文件的使用,进而减少头文件的循环引用的发生

所以我想说的是,在大型项目中尽量使用 extern 关键字来减少头文件的使用,这样可以减少因循环引用而导致的编译错误和时长

相关文章:

「C 语言」extern关键字

在 C 语言中,关键字 extern 是用来告诉编译器,这个变量 OR 函数在其他文件中已有定义,可在当前文件中使用 当我们定义了一个全局变量 OR 函数时,它就已经具有了外部链接的属性,我们只需要通过在引用该变量的文件中用 …...

oracle单个用户最大连接数限制

项目经理反馈,现场已做了单个用户的最大连接数2000的限制,但数据库还是报无法连接,故障用户的连接数已3800多了。 查看日志报错如下 2023-07-20T13:07:57.79465308:00 Process m000 submission failed with error 20 Process m000 submiss…...

计算机网络最基础知识介绍

OSI和TCP/IP是很基础但又非常重要的知识,很多知识点都是以它们为基础去串联的,作为底层,掌握得越透彻,理解上层时会越顺畅。今天这篇网络基础科普,就是根据OSI层级去逐一展开的。 01 计算机网络基础 01 计算机网络的分类 按照网络的作用范围:广域网(WAN)、城域网(MA…...

接口测试进阶之数据模板

大家好久不见了。今天的文章将介绍jinja2模板在接口测试数据上的应用。 这几个月我在想,进阶系列要怎么写。 毕竟很多情况下,我觉得写技术文章和做培训一样,都会有两个结果: 1.是需要这些知识的人看不懂。 2.是看得懂的人不需要…...

Java中使用MySQL详解

1. 简介 在Java开发中,与数据库的交互是常见且重要的一部分。MySQL是一个广泛使用的关系型数据库管理系统,而Java作为一种强大的编程语言,提供了丰富的API和工具,使得与MySQL数据库的结合应用更加便捷和高效。 本篇博客将详细介…...

Docker安装Elasticsearch相关软件安装

Docker安装Elasticsearch相关软件安装 本文将介绍通过 Docker 的方式安装 Elasticsearch 相关的软件。 1、Docker安装Elasticsearch 1.1 搜索镜像 $ docker search elasticsearch $ docker search elasticsearch:7.12.11.2 拉取镜像 $ docker pull elasticsearch:7.12.11.…...

Ubuntu的安装与部分配置

该教程使用的虚拟机是virtuabox,镜像源的版本是ubuntu20.04.5桌面版 可通过下面的链接在Ubuntu官网下载:Alternative downloads | Ubuntu 也可直接通过下面的链接进入百度网盘下载【有Ubuntu20.04.5与hadoop3.3.2以及jdk1.8.0_162,该篇需要使…...

为什么 Splashtop 是更好用的 iOS 远程桌面应用

全球远程桌面软件市场最近达到19.2亿美元,表明使用任意设备实现随处远程控制越来越受欢迎。 近年来,企业的运营方式发生了重大改变,远程桌面软件已成为广泛使用的解决方案。Splashtop 是目前最好用的远程桌面工具之一,安全可靠且…...

[SQL挖掘机] - 字符串函数 - lower

介绍: lower函数是mysql中的一个字符串函数,其作用是将给定的字符串转换为小写形式。它接受一个字符串作为参数,并返回一个新的字符串,其中所有的字母字符均被转换为小写形式。 使用lower函数可以帮助我们在字符串处理中实现标准化和规范化…...

什么是Koala?

Koala 介绍 koala 是一个前端预处理器语言图形编译工具,支持 Less、Sass、Compass、CoffeeScript,帮助 web 开发者更高效地使用它们进行开发。跨平台运行,完美兼容 windows、linux、mac。 关键特性 多语言支持 支持 Less、Sass、CoffeeSc…...

阿里巴巴前端开发规范

前言 规范的目的是为了编写高质量的代码,让你的团队成员每天的心情都是愉悦的,大家在一起是快乐的。 现在软件架构的复杂性需要协同开发完成,如何高效地协同呢?无规矩不成方圆,无规范难以协同,比如&#xf…...

opencv-19 图像色彩空间转换函数cv2.cvtColor()

cv2.cvtColor() 函数是 OpenCV 中用于图像颜色空间转换的函数。它允许你将图像从一个色彩空间转换为另一个色彩空间。在 Python 中,你可以使用这个函数来实现不同色彩空间之间的转换。 函数的基本语法为: cv2.cvtColor(src, code[, dst[, dstCn]])参数…...

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心

SpringCloudAlibaba Nacos配置中心 在java代码中或者在配置文件中写配置,是最不雅的,意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中,每次修改了配置后只需要重启一次服务即可。话不多说,直接干货拉…...

【Kafka源码走读】Admin接口的客户端与服务端的连接流程

注:本文对应的kafka的源码的版本是trunk分支。写这篇文章的主要目的是当作自己阅读源码之后的笔记,写的有点凌乱,还望大佬们海涵,多谢! 最近在写一个Web版的kafka客户端工具,然后查看Kafka官网,…...

Windows API遍历桌面上所有文件

要获取桌面上的图标&#xff0c;可以使用Windows API中的Shell API。以下是遍历桌面上所有文件的示例代码&#xff1a; #include <Windows.h> #include <ShlObj.h> #include <iostream> #include <vector> using namespace std;int main() {// 获取桌…...

【MySQL】基本查询(插入查询结果、聚合函数、分组查询)

目录 一、插入查询结果二、聚合函数三、分组查询&#xff08;group by & having&#xff09;四、SQL查询的执行顺序五、OJ练习 一、插入查询结果 语法&#xff1a; INSERT INTO table_name [(column [, column ...])] SELECT ...案例&#xff1a;删除表中重复数据 --创建…...

【Go语言】Golang保姆级入门教程 Go初学者介绍chapter1

Golang 开山篇 Golang的学习方向 区块链研发工程师&#xff1a; 去中心化 虚拟货币 金融 Go服务器端、游戏软件工程师 &#xff1a; C C 处理日志 数据打包 文件系统 数据处理 很厉害 处理大并发 Golang分布式、云计算软件工程师&#xff1a;盛大云 cdn 京东 消息推送 分布式文…...

mysql 自增长键值增量设置

参考文章 MySQL中auto_increment的初值和增量值设置_auto_increment怎么设置_linda公馆的博客-CSDN博客 其中关键语句 show VARIABLES like %auto_increment% set auto_increment_increment4; set auto_increment_offset2;...

【pytho】request五种种请求处理为空和非空处理以及上传excel,上传图片处理

一、python中请求处理 request.args获取的是个字典&#xff0c;所以可以通过get方式获取请求参数和值 request.form获取的也是个字典&#xff0c;所以也可以通过get方式获取请求的form参数和值 request.data&#xff0c;使用过JavaScript&#xff0c;api调用方式进行掺入jso…...

【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen&#xff0c;之后一直按Enter即可&#xff0c;这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意&#xff1a;也可以在 windows 端生成密钥&#xff0c;只需要保证公钥在服务器端&#xff0c;私钥…...

Qt播放MP4视频时,如何优雅地处理播放列表和播放模式?一个实战案例分享

Qt播放MP4视频时如何优雅处理播放列表与播放模式 在开发多媒体应用时&#xff0c;播放列表管理和播放模式切换往往是比基础播放功能更具挑战性的部分。本文将深入探讨如何在Qt框架下构建一个健壮的MP4播放器&#xff0c;重点解决播放列表的智能管理和多种播放模式的优雅实现。…...

NEURAL MASK 惊艳效果案例:城市景观照片的4K超分辨率重建

NEURAL MASK 惊艳效果案例&#xff1a;城市景观照片的4K超分辨率重建 每次翻看手机相册&#xff0c;是不是总有些照片让你觉得可惜&#xff1f;明明当时光线、构图都挺好&#xff0c;可放大一看&#xff0c;细节糊成一团&#xff0c;远处的招牌看不清&#xff0c;建筑的纹理也…...

Nucleus Co-Op:如何让单机游戏秒变本地多人分屏神器?

Nucleus Co-Op&#xff1a;如何让单机游戏秒变本地多人分屏神器&#xff1f; 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 还在为找不到合适的本…...

IHaskell与Python对比分析:函数式编程在数据科学中的独特价值

IHaskell与Python对比分析&#xff1a;函数式编程在数据科学中的独特价值 【免费下载链接】IHaskell A Haskell kernel for the Jupyter project. 项目地址: https://gitcode.com/gh_mirrors/ih/IHaskell 在数据科学领域&#xff0c;选择合适的编程语言往往直接影响开发…...

C#窗体上位机的创建、学习

创建窗体项目所有Windows窗体属性设计(Name)&#xff1a; 代码中用来标识该对象的名称。唯一&#xff0c;不能重复。外观Text&#xff1a; 与控件关联的文本。窗体Form1(Frm)属性&#xff1a;布局->StartPosition&#xff1a;CenterScreen(屏幕中央)布局->…...

Qwen3-14B大模型推理部署教程:支持对话/生成/推理多任务实战

Qwen3-14B大模型推理部署教程&#xff1a;支持对话/生成/推理多任务实战 1. 快速了解Qwen3-14B镜像 Qwen3-14B是通义千问推出的大语言模型&#xff0c;支持对话、文本生成和逻辑推理等多种任务。这个私有部署镜像经过专门优化&#xff0c;让你能在自己的硬件上快速运行这个强…...

免费开源一款聚合支付系统,已封装微信、支付宝、PayPal、京东、银联、QQ等支付方式

大家好&#xff0c;我是小悟。 众所周知&#xff0c;几乎所有商业应用都离不开支付功能&#xff0c;但支付集成却常常成为开发者的"痛点"。 面对微信支付、支付宝、银联等众多支付渠道&#xff0c;每个平台都有自己复杂的API、不同的签名机制和开发规范。 开发者往往…...

Modbus调试工具《二》 Master仿真器实战技巧解析

1. ModbusMaster仿真器核心功能解析 第一次打开ModbusMaster仿真器时&#xff0c;很多新手会被界面上的各种按钮和选项搞得晕头转向。其实这个工具的设计逻辑非常清晰&#xff0c;主要分为四大功能模块&#xff1a;连接配置、数据采集、寄存器操作和辅助工具。我刚开始用的时候…...

2026年西安市莲湖区Geo搜索优化排名,专业企业究竟谁能拔得头筹?

在数字化浪潮席卷的今天&#xff0c;Geo搜索优化&#xff08;地理搜索优化&#xff09;对于企业的重要性不言而喻。尤其在西安市莲湖区&#xff0c;企业们对于提升自身在Geo搜索中的排名需求愈发迫切。究竟哪家专业企业能够在2026年的竞争中脱颖而出&#xff0c;成为Geo搜索优化…...

CSS如何实现不同尺寸的卡片网格_利用Grid跨行跨列设置

Grid卡片跨行跨列需用grid-row: span 2等语法避免线号计算错误&#xff1b;auto-fit需容器有明确宽度&#xff1b;高度不一致时宜用嵌套布局或grid-auto-rows: auto&#xff1b;IE11不支持现代Grid跨行&#xff0c;应降级方案。Grid卡片跨行跨列时&#xff0c;grid-row和grid-c…...