首页 > 编程语言 >C++ extern关键字

C++ extern关键字

时间:2023-07-23 12:55:05浏览次数:43  
标签:文件 int C++ 关键字 other cpp extern main

首先,一个文件中的变量或者函数,它的可视范围只在这个文件中,其他文件是不会知晓定义在另一个文件中的变量和函数的。

extern 关键字的作用就是,告知编译器,这里有一个变量或者函数的声明,它的定义你得去其他合作者那里去找。这就是所有了。

C++或者C是一个组合多文件进行合作编程的语言。他们的合作是由编译器进行组织的。所以我们会发现编译器玩的是 .cpp 文件。

并且,如果我们需要使用一个变量或者函数,它必须在这个 .cpp 文件中有它的声明(declaration),才可以使用,这是前提,当然他也一定要相关的有定义(definition)。

每一个 .cpp 文件(包含着许多变量和函数的定义)都自成体系,可以被编译成 库文件(二进制文件), 完成了从 ASCII 到 二进制的升华,便于其他文件的使用,而使用说明书被抽象成 .h

比较关键的是

int i;	// 既是声明也是定义
int j = 1;	// 既是声明也是定义
void int add(int a, int b);	// 只是声明

代码

TestExtern
	|____ main.cpp
	|____ other.cpp
	|____ CMakeLists.txt
//	main.cpp
#include<iostream>

extern int a;

int main(){
    std::cout<< a << std::endl;
    return 0;
}
// other.cpp
int a = 5;
# CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(testExtern)

add_executable(testExtern main.cpp other.cpp)

other.cpp 被编译成 静态库 或者 动态库 链接到 main.cpp 上也可以执行。

标签:文件,int,C++,关键字,other,cpp,extern,main
From: https://www.cnblogs.com/asmurmur/p/17574862.html

相关文章

  • 代码随想录-链表-C++总结
    代码随想录(programmercarl.com)这次复习的主要目的还是熟练c++的基本语法知识,顺带过一下链表的典型题目印象深刻直接没做出来的有7.链表相交,没有想到先过一遍求出两条链表的长度,然后通过长度差的信息来get交点做的时候写出bug的有3.设计链表,涉及的基础思想还是比较多的,需......
  • C/C++商品信息管理系统[2023-07-22]
    C/C++商品信息管理系统[2023-07-22]选题4商品信息管理系统的设计与实现一、设计要求本课题要求同学们完成一个信息管理类的课题---《商品信息管理系统》,能够对商品信息进行有效的管理,实现商品信息查询、商品销售、商品进货、商品销售信息统计等方面的基本操作。管理内容(商品......
  • C/C++运动会成绩管理系统[2023-07-22]
    C/C++运动会成绩管理系统[2023-07-22]题目37:运动会成绩管理系统该系统可以记录校运动会全部运动项目的成绩、得分和排名情况,系统功能项以菜单形式显示。项目包括50米、100米、200米、400米、1500米、各接力项目、跳高、立定跳远、三级跳远、铅球等。系统可以实现以下......
  • C/C++疫情信息查询系统[2023-07-22]
    C/C++疫情信息查询系统[2023-07-22]疫情信息查询系统简介一、问题描述为了方便人们快速了解疫情信息,该系统能够提供对各省市卫健委发布疫情数据的录入、查询和统计等功能。疫情数据包括确诊病例、疑似病例等人数信息还包括确诊人的详细轨迹信息。涉及到火车、飞机、长途汽车等......
  • C/C++简易二手交易平台[2023-07-22]
    C/C++简易二手交易平台[2023-07-22]项目一简易二手交易平台题目背景实现一个C2C交易平台管理系统。用户作为买家,购买他人的商品。用户作为卖家,发布自己的商品。需要实现的功能管理员功能:管理员登录、注销查看、搜索、下架商品查看所有订单查看、删除......
  • C/C++教室管理系统[2023-07-22]
    C/C++教室管理系统[2023-07-22]课程题目:教室管理系统内容要求:(1)学生通过这个功能,可以查询相关院系相关教师的个人信息以及开课信息,以便能更好地了解教师及其开课情况。(2)学生通过这个功能,可以查询相关教学楼相关教室的信息以及该教室在每天任一时段的使用情况,或者有课,或者有讲座......
  • C/C++设备预约系统[2023-07-22]
    C/C++设备预约系统[2023-07-22]大型实验室有大量公用试验设备,使用人员众多,使用在线预约管理系统可以有效提高设备的使用效率,节约科研人员的时间。本项目要求设计一个设备预约系统,达到以上目的。建议提供的功能包括:人员管理:使用用户名、密码登录系统。用户包括管理员和一般用......
  • 【持续更新】C 和 C++ 区别很大!
    一些容易被忽略的C与C++的重要区别头文件C标准库头文件名在C++中通常去除扩展名,并加上c前缀,如:stdio.h->cstdiostdlib.h->cstdlib其中一个重要的区别是后者保证与C库兼容的各个函数名可以在std命名空间中找到,但并不保证它们不存在于根命名空间中,这可能会引......
  • C/C++航空客运订票系统[2023-07-22]
    C/C++航空客运订票系统[2023-07-22]航空客运订票系统1、每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。2、系统能实现的操作和功能如下:(1)查......
  • 基于C++11特性的线程池
    写在前面:本文学习自基于C++11实现线程池,代码部分均属于该博主,自己只是想记录以下自己的认知,并以这种方式加深一下自己对于多线程的理解1前置知识左值和右值左值(Lvalue):左值是指具有持久性和地址的表达式。简单来说,左值是可以被引用的、可以取地址的表达式。左值可以是变量、对......