多文件项目 extern的用法

多文件和extern的意义:
(1) 模块化 ,将逻辑相关的功能放在同一个cpp里
(2) 多人合作,让不同的人编辑不同的cpp文件。

项目一般是由多个cpp文件组成的

一个例子:让用户从控制输入一个值,表示圆的半径。程序计算并输出圆的面积。

// other.cpp
double get_area(double r)
{
    return 3.14 * r * r;
}
// main.cpp
extern double get_area(double r);

int main()
{
   double r;
   printf("enter r: ");
   scanf("%lf", &r);
   
   double area = get_area(r);
   printf("result: %.3lf\n", area);   
   return 0;
}

使用extern

extern, (external),外部的
extern: 声明外部函数
在A.cpp中使用B.cpp中的函数,需要extern声明
extern: 声明外部全局变量
在A.cpp中访问B.cpp中的全局变量,需要extern声明
extern的作用: 告诉编译器,在某个cpp文件中,存在这么一个函数/全局变量。
注:符号(symbol): 把函数名和全局变量名,称为符号。
全局变量的声明与定义

声明Declaration
extern int a;
extern double b;
extern float numbers[5];
定义Definition
int a = 10;
double b;
float numbers[5] = {1.0, 1.1 };

注:全局变量的声明语句是不能加初始值的

extern的作用:
告诉编译器,在某个cpp文件中,存在这么一个函数/全局变量。
所以,在本cpp中定义它也是可以的,不是一定要在别的cpp中定义。
被声明为extern的函数或全局变量,其实在本cpp中定义也是可以的。

注意:
(1) 重定义 multiple definition
多个cpp中,不能定义相同的名字的符号。
具体来讲:
不能定义相同名称的全局变量。
不能定义相同的函数。(相同的函数:指函数名+参数列表均相同的函数。)
(2) 无定义 undefined reference
你用extern声明了一个函数,并且调用了它。但是在链接过程中,没有在任何一个cpp中发现它的定义。


❤️


最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    扶光启玄阅读 5,258评论 0赞 13
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 8,210评论 0赞 27
  • [简介][] 简介 目录 1. 关于 C++ 中的 extern "C" 1.1. 简介 1...
    QuietHeart阅读 3,992评论 1赞 28
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,163评论 0赞 14
  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 20,554评论 0赞 50

友情链接更多精彩内容