首页 > 其他分享 >C语言 ---- extern的使用

C语言 ---- extern的使用

时间:2024-04-06 16:55:51浏览次数:18  
标签:源文件 File1 定义 C语言 ---- extern 全局变量 声明

extern 是一个关键字,用于在C和C++中声明一个变量或函数的外部链接性。当您在一个源文件中使用 extern 声明一个变量或函数时,它表示该变量或函数是在另一个源文件中定义的,而不是在当前文件中定义的。

1. 声明全局变量的外部链接性:

// File1.c
int global_variable; // 定义一个全局变量

// File2.c
extern int global_variable; // 声明一个全局变量,表示它是在其他文件中定义的

2. 声明全局函数的外部链接性:

// File1.c
void foo(); // 定义一个函数

// File2.c
extern void foo(); // 声明一个函数,表示它是在其他文件中定义的

3. 在头文件中使用 extern:

通常,extern 关键字在头文件中使用,以便在多个源文件中共享变量或函数的声明。

// File1.h
extern int global_variable; // 在头文件中声明一个全局变量

// File1.c
#include "File1.h"
int global_variable = 10; // 在源文件中定义全局变量

// File2.c
#include "File1.h"
extern int global_variable; // 在其他源文件中使用外部声明

这样可以确保所有文件都使用相同的变量定义,避免了重复定义的问题,并且允许多个源文件共享全局变量或函数的信息。

总之,extern 关键字的主要作用是在一个源文件中声明另一个源文件中定义的变量或函数,以便在编译时将它们正确地链接在一起。

标签:源文件,File1,定义,C语言,----,extern,全局变量,声明
From: https://www.cnblogs.com/zxr-blog/p/18117591

相关文章

  • 4.6
    其实有很多想写的,但是很多都忘了()()()如果有能实时记录文字的东西就好了昨天看了个番,然后发现自己的处境和女主差不多,只不过女主太有天赋了,是我比不上的,然后后面就是经典剧情:互相救赎,当时我就想:互相救赎吗,好像很有趣啊,然后就破防了然后晚上在床上大概搞懂了自己现在这个样子是怎么样......
  • YOLOv8 深度详解!一文看懂,快速上手
    https://zhuanlan.zhihu.com/p/598566644?utm_id=0&wd=&eqid=a1d56281000fe8920000000464910f3a YOLOv8是ultralytics公司在2023年1月10号开源的YOLOv5的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务,在还没有开源时就收到了用户的广泛关注。考虑到......
  • JsonCpp 笔记: 读写 Json 文件
    JsonCpp笔记:读写Json文件完成时间:2024-04-06本文主要介绍使用JsonCpp读写Json文件,JsonCpp是C++上的一个Json处理库Json的语法如果熟悉Json语法,此部分可以跳过Json包含两种结构:对象(object),它是键值对的集合(key:value)有序数组(array)......
  • 训练(清明)
    1.飞机降落(经典dfs,遍历每一种情况,不符返回0,符合返回1,只要有一个返回值1就成立,记得每次都初始化一下标记数组)查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,T,b[15];structfei{intt;intd;intl;};structfeif[15];......
  • 玩家角色——攀墙跳
    目标新增Climb状态(略)玩家角色蓝图中添加攀爬检测机制的宏将关卡中的TileMap的Tag设置为Wall(暂时先这么做),让攀爬检测可以检测到玩家角色蓝图的跳跃输入添加攀爬反跳功能的逻辑动画蓝图的状态机设置核心逻辑通过射线检测机制对玩家面前的碰撞进行检测,如果是墙则修改玩家的......
  • P2495 [SDOI2011] 消耗战
    P2495[SDOI2011]消耗战虚树优化dp模板题考虑\(m=1\)。只需要简单的树形dp,设\(f_i\)表示\(i\)子树中的关键点都到不了\(i\)点的最小代价。转移枚举子节点\(v\),有:若\(v\)点为关键点,\(f_u=f_u+w(u,v)\)。否则,\(f_u=f_u+\min(f_v,w(u,v))\)。如果每次询问都跑一遍......
  • mysql小结
    distinct:去重复值......
  • Vue
    0、提醒*注意!一旦data里数据改了,vue会重新解析模板,和该数据相关的模板、方法都会更新对象里的key是字符串,但是newvue实例的时候,经常把key简写,还经常把函数简写Vue在配置对象里写的所有东西都可以在vm.$options里获取得到 Form里的标签取值,可以用v-bind/v-m......
  • .NET 8使用日志功能以及自定义日志提供程序
    .NET8使用日志功能以及自定义日志提供程序日志级别下表列出了LogLevel值、方便的Log{LogLevel}扩展方法以及建议的用法:展开表LogLevel“值”方法描述Trace0LogTrace包含最详细的消息。这些消息可能包含敏感的应用数据。这些消息默认情况下处于禁用状态,并......
  • Vue | 底层分析
    一、下载vueGit仓库地址:https://github.com/vuejs/vue.gitGitclonehttps://github.com/vuejs/vue.gitPnpminstall(vue是用pnpm管理工具,用npm会报错,用yarn会找不到依赖包)Pnpmrundev学习思路:先自己搜索->描述->再深入源码学习 二、变化侦测0、现象在da......