c语言中extern定义和引用其他文件的变量,(sublime text)单独一个文件编译不会成功

关键字extern的作用

这个很常见的都知道是定义一个外部变量或函数,但并不是简单的建立两个文件,然后在用extern 定义在另一个非最初定义变量的文件里

区分文件和编译运行的文件

例如,一个文件夹里有文件a.c和文件b.c ,在sublime text中直接运行的只是单独一个文件,而大工程一般有很多文件,一个文件的正常运行是和其他文件相关联的。对于单独运行的文件即使在同一个文件夹中的文件使用了extern定义,编译时也不会去查找另外的文件。

文本编译和软件编程IDE的区别

文本编译器 也可以写代码,但使用编译器时只是针对当前编写的代码文件 有关;编程IIDE(集成开发环境)中常见的有一个选项是"新建工程",这个工程里可以包含多个文件,整体编译时每个文件之间的联系也会考虑到。这是和新建文件不同文本编辑器 中的只有新建文件

尝试用两个c文件测试extern

首先,最初定义的变量文件命名为b.c ,使用extern声明的文件命名为a.c

第1种实现方式,不使用头文件

需要注意的是,初次定义的变量必须是全局变量

a.c中的内容

c 复制代码
#include<stdio.h>

#include <stdlib.h>
int main()
{
    printf("asdgawerg\n");
        extern int num; //只要放在使用的语句前就行
    printf("this is num:%d\n",num);
    system("pause");  //为了运行后不立刻关闭窗口
    return 0;
}

b.c中的内容

c 复制代码
#include<stdio.h>
int num = 5;  //必须是全局变量
// void func();
// void main()
// {
// func();

// }
void func()
{

    printf("fun in b.c\n");
}

第2种使用包含头文件的方式

多添加一个头文件b.h

c 复制代码
void func();
int num;

a.c文件中不需要extern 声明变量和函数就可以 ,只需要包含头文件b.h

编译多个文件的方式

从根本上来说,就是直接通过编译器命令将多个文件同时编译

编译多个文件参考,参考2

下面在不同环境下运行程序,

在powershell环境下运行

在文件夹下,按下shift和鼠标右键 ,如下图所示

像下图中输入命令,进行和编译和执行

在cmd环境下运行


相关推荐
努力的lpp4 小时前
php反序列化一(大白话版)
开发语言·web安全·php·ctf·反序列化
菜鸟~noob2334 小时前
【电子战】第03篇:CFAR(恒虚警)处理【含matlab代码】
开发语言·matlab
泡海椒5 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb5 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
T1mzhou5 小时前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
Keven_116 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
脉动数据行情16 小时前
C# 实现德指 DAX 期货 WebSocket 实时行情监听
开发语言·websocket·c#
大圣编蚕7 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
菜鸟~noob2337 小时前
【电子战】第02篇:能量检测器 vs. 相关检测器【含matlab代码】
开发语言·matlab
OpenAnolis小助手8 小时前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·阿里云·操作系统控制台·sysom