美文网首页C语言C++
多文件项目 extern的用法

多文件项目 extern的用法

作者: NiceBlueChai | 来源:发表于2017-11-05 19:59 被阅读74次

多文件和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中发现它的定义。


❤️


相关文章

  • 多文件项目 extern的用法

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

  • C++基础

    C++ readme 避免头文件重复定义, extern C的用法: 内联函数: inline function ...

  • IOS:static和extern的使用

    先上代码: 输出结果: 一、extern的作用 extern:引入全局变量,本文件中没有就从整个项目中引入,如果整...

  • UIKIT_EXTERN 的简单用法

    转载: 1:UIKIT_EXTERN 的简单用法 2:IOS UIKIT_EXTERN, __attribute_...

  • const 与#define 用法

    用法 .h extern NSString * const LoginURL; .m NSString * ...

  • extern用法

    extern_百度百科 /////////////////////////////////////////////...

  • iOS 中 extern const static define

    前言 目录 一 . extern const static 用法const 一般用来定义一个常量 extern...

  • “extern”的用法

    1、声明外部变量 现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说...

  • extern static const 以及的全局变量

    在项目中定义一个全局变量,默认是整个项目文件都可使用的,其实默认是extern修饰, 如果想在别的文件使用这个全局...

  • const, static, extern用法, 实际项目中用法

    const 1.const只修饰自己右边的变量.2.被const修饰的变量是只读的,不可更改.注:这就是为什么推荐...

网友评论

    本文标题:多文件项目 extern的用法

    本文链接:https://www.haomeiwen.com/subject/wvyhmxtx.html