首页 > 其他分享 >【C】extern 关键字的使用

【C】extern 关键字的使用

时间:2024-05-26 21:23:43浏览次数:19  
标签:头文件 函数 int 关键字 func 使用 extern

extern关键字的作用就是告诉编译器,去别的地方找这个函数或者变量的定义。

1、引用另一个文件中的变量

main.c

#include<stdio.h>

int main()
{
    extern int num;
    printf("%d",num);
    return 0;
}

b.c

#include<stdio.h>

int num = 5;

void func()
{
    printf("fun in a.c");
}

2、引用另一个文件中的函数

这里main函数中引用了b.c中的函数func。因为所有的函数都是全局的,所以对函数的extern用法和对全局变量的修饰基本相同,需要注意的就是,需要指明返回值的类型和参数。

main.c

#include<stdio.h>

int main()
{
    extern void func();
    func();
    return 0;
}

b.c

#include<stdio.h>

const int num=5;
void func()
{
    printf("fun in a.c");
}

3、与头文件的关系

头文件就是放各种接口定义的地方,不要在头文件中定义任何东西,比如全局变量:

/*xx头文件*/
#ifndef _XX_头文件.H
#define _XX_头文件.H
int A;
#endif

这个头文件如果被多个文件引用,在编译的时候是不会报错的,但是在链接的时候编译器会报错:重复定义全局变量。这个时候就需要加上extern关键字,表示这是一个声明,而不是定义。

总结

extern关键字的作用就是声明,因为函数是有声明语法的,省略函数体。所以一般函数声明是省略了extern关键字。

int func(void);
等效于
extern int func(void);

但是变量是没有单独的声明语法,所以要表示变量声明必须加上extern关键字。

int a; // 这是定义
extern int a; // 这是声明

参考

1、https://blog.csdn.net/xingjiarong/article/details/47656339
2、http://lpy999.blog.163.com/blog/static/117372061201182051413310/

标签:头文件,函数,int,关键字,func,使用,extern
From: https://www.cnblogs.com/servlet-context/p/18214266

相关文章

  • wetool企业版使用教程及下载方式 微兔该如何使用 wetool还能用吗 wetool扳手工具wetoo
    今天给大家推荐一款我们目前在使用的电脑群发工具掘金小蜜,不仅可以无限多开,方便你同时管理多个账号,群发功能更是十分强大,轻松释放你的双手。掘金小蜜(只支持Win7及以上操作系统,没有推Mac版和手机客户端。可直接可直接复制链接网页下载  lhttps://jjxx.lanzouo.com/s/jjxm......
  • 使用DQN 来优化车间排产JSP探索
    首先感谢莫烦大神的python强化学习的教程让我能快速了解强化学习自从几年前从事智能工厂建设工作,对于APS听到最多的就是APS上线失败的案例。让自己开始思考APS上线的难度到底在哪里?可能主要原因是APS动态性问题待解决,信息化孤岛的问题。动态性主要是客户订单变化、现场生产......
  • 如何使用热风枪
    1. 温度设定2.风速设定  失效及错误:1.有些芯片的手册会指明焊接温度,可能会低于一般340摄氏度。必要时,芯片周围其他器件可以包“高温胶带”做保护......
  • .Net使用ElasticSearch原理及入门
    1、Elasticsearch简介Elasticsearch是一个基于Lucene,开源的高扩展分布式全文检索引擎,它不会将信息储存为列数据行,而是储存已序列化为JSON文档的复杂数据结构。当文档被储存时,它将建立索引并且近实时(1s)被搜索。Elasticsearch使用一种被称为倒排索引的数据结构,该结构支持快......
  • VMware虚拟机中ubuntu使用记录(10)—— 如何在Ubuntu18.04中使用自己的单目摄像头运行OR
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1.查看摄像头的话题2.运行测试三.运行测试可能的报错1.报错一(1)问题描述(2)原因分析(3)解决2.报错二(1)问题描述(2)解决......
  • Cookie和Session使用说明
    会话技术产生的原因浏览器和服务器之间使用的是HTTP请求来进行数据传输HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求HTTP协议设计成无状态的目的是让每次请求之间相互独立,互不影响请求与请求之间独立后,就无法实现多次请求之间的数据共享Coo......
  • Llama模型家族之使用 Supervised Fine-Tuning(SFT)微调预训练Llama 3 语言模型(五)基于已
    LlaMA3系列博客基于LlaMA3+LangGraph在windows本地部署大模型(一)基于LlaMA3+LangGraph在windows本地部署大模型(二)基于LlaMA3+LangGraph在windows本地部署大模型(三)基于LlaMA3+LangGraph在windows本地部署大模型(四)基于LlaMA3+LangGraph在w......
  • JDBC & 数据库连接池:详述Java 数据库操作的基础,数据库连接池的使用以及原理,比较常用数
    JDBC基础 JDBC的定义和目的 JDBC(JavaDatabaseConnectivity)是一个用于执行SQL语句的JavaAPI,可以与多种关系数据库进行交互,这的API由一组用Java语言编写的类和接口组成。 JDBC鼓励供应商使用JDBC驱动程序,该驱动程序可以通过数据库管理系统的客户机接口与各个数......
  • Java中try catch finally 关键字
    异常处理中的几个常用关键字(trycatchfinallythrowthrows)异常处理java中提供一套异常处理机制,在程序发生异常时,可以执行预先设定好的处理程序,执行完成后,程序不会停止,可以继续向后执行.在写代码的时候,就要根据不同的情况设定好处理程序,运行程序......
  • 轻松拿捏C语言——【字符串函数】的使用及模拟实现
    ......