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

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中的内容

#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中的内容

#include<stdio.h>
int num = 5;  //必须是全局变量
// void func();
// void main()
// {
// func();// }
void func()
{printf("fun in b.c\n");
}

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

多添加一个头文件b.h

void func();
int num;

a.c文件中不需要extern 声明变量和函数就可以,只需要包含头文件b.h
在这里插入图片描述

编译多个文件的方式

从根本上来说,就是直接通过编译器命令将多个文件同时编译
编译多个文件参考,参考2
下面在不同环境下运行程序,

在powershell环境下运行

在文件夹下,按下shift和鼠标右键,如下图所示
在这里插入图片描述
像下图中输入命令,进行和编译和执行
在这里插入图片描述

在cmd环境下运行

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/386593.html

相关文章:

  • 时序数据中的孤立野点、异常值识别及处理方法
  • JetBrains PyCharm 2024 mac/win版编程艺术,智慧新篇
  • MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式
  • 《逆向投资 邓普顿的长赢投资法》
  • C++中main函数的参数、返回值分别什么意思?main函数返回值跟普通函数返回值一样吗?
  • Java程序员学习Go开发Higress的WASM插件
  • Python入门-基本数据类型-数字类型
  • 小程序web-view无法打开该页面的解决方法
  • 海外媒体发稿:媒体宣发套餐的作用分享-华媒舍
  • 【R语言】plot输出窗口大小的控制
  • 【shell脚本实战案例】数据磁盘初始化
  • 1.7 计算机体系结构分类
  • 数据结构之B树:深入了解与应用
  • Tensorflow入门实战 T06-Vgg16 明星识别
  • SpringBoot 3.3.1 + Minio 实现极速上传和预览模式
  • Linux: network: 丢包分析的另一个途径 tracing
  • 【保姆级教程+配置源码】在VScode配置C/C++环境
  • Qt creator实现一个简单计算器
  • Java代码基础算法练习-计算被 3 或 5 整除数之和-2024.06.29
  • Socket编程详解(二)核心代码讲解
  • (项目实战)聚合支付系统开发环境搭建-基于VMware17安装Centos7.9
  • Python现在可以在线编程了!
  • ThreadPoolExecutor线程池创建线程
  • 畅谈GPT-5
  • 石家庄高校大学智能制造实验室数字孪生可视化系统平台项目验收
  • WLAN 4-Way Handshake如何生成GTK?
  • Qt/C++模拟鼠标键盘输入
  • OpenGL3.3_C++_Windows(22)
  • electron-builder 打包过慢解决
  • leetcode226反转二叉树