extern的用法

147 阅读1分钟

意思: 外部的
extern: 声明外部函数

在A.cpp中使用B.cpp中的函数,需要extern声明

extern: 声明外部全局变量

在A.cpp中访问B.cpp中的全局变量,需要extern 声明
全局变量的声明值不能加初始值。

extern的作用: 告诉编译器,在某个cpp文件中,存在这么一个函数/全局变量
符号: 函数名和全局变量名,称为符号。
main.cpp

#include <stdio.h>
extern double get_area(double r);
int main()
{
    double r;
    printf("entern r:");
    printf("%d",a);
    scanf("%lf",&r);
    double area=get_area(r);
    printf("result:%.3lf\n",area);
    return 0;
}

B.cpp

int a=10;
double b;
float numbers[5]={1.0,1.1};
double get_area(double r)
{
    return 3.14*r*r;
}

函数的声明与定义

函数的声明
extern int sum(int,int`);//变量名随便给,只关注变量类型
函数的定义
int sum(int a,int b)
{
    return a+b;
}
函数的声明语句中,关键字extern可以省略
被声明为extern的函数或全局变量,在本cpp中定义也是可以的。

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

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

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