美文网首页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的用法

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