extern的用法

1. extern修饰变量和函数

声明extern关键字的全局变量和函数可以使得它们能够跨文件被访问

(1)针对同一个文件中的变量

#include <iostream>
using namespace std;

void func();

int main()
{
    func();
    extern int num;
    cout << num << endl; // 如果不使用前一行,则会发生错误使用了未声明的标志符num
    return 0;
}

int num = 3;

void func()
{
    cout << num << endl;
}

//如果没有声明extern int num; 在main函数中调用num,则未定义,因为int num=3;定义在main函数后,将定义放在前面就可以使用,当然也可以使用extern,但是不建议

(2)不同文件中使用extern

一般在头文件中声明extern修饰的函数和变量,在cpp文件中实现

它的作用就是: 声明的函数和变量可以在本编译单元或其他编译单元中使用。 即B编译单元要引用A编译单元中定义的全局变量或函数时,B编译单元只要包含A编译单元的头文件即可,在编译阶段,B编译单元虽然找不到该函数或变量,但它不会报错,它会在链接时从A编译单元生成的目标代码中找到此函数

2. extern "C"

   如 extern "C" {void fun(int a, int b);},它的作用是:编译器在编译fun这个函数名时按C的规则去翻译相应的函数名而不是C++的。

3. extern, const, static

  • extern和static不能同时修饰一个变量,它们的含义背道而驰
  • const单独修饰的全局变量跟static具有相同的特性,即它们只能作用于本编译模块中,而当const与extern一起的时候,特性就跟extern的一样,只不过使用const修饰后这个变量不可以被修改

原文链接: https://www.cnblogs.com/vivian187/p/12697842.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    extern的用法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/397176

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月7日 上午9:18
下一篇 2023年4月7日 上午9:18

相关推荐