首页 > 编程语言 >C++ extern

C++ extern

时间:2024-03-20 20:44:06浏览次数:25  
标签:函数 int C++ 编译器 extern 链接

extern有两个作用:

当它与”C”一起连用时,如: extern “C” void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的。


  • C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。

当extern不与”C”在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块或其他模块中使用,记住它是一个声明不是定义!

标签:函数,int,C++,编译器,extern,链接
From: https://www.cnblogs.com/love-9/p/18086043

相关文章

  • C++初阶:初识模板
        在之前的C与C++编程中,针对实现同样类型功能的函数我们学会使用了函数重载,终于可以不用记忆多个功能相同但是函数名不同的函数了喵。但是在实现的时候仍然显得有点不太方便,有些冗余。世界是懒人的世界,为了方便懒人的使用,模板应运而生~目录一、引子二、函数模......
  • 复试C++14真题 看程序写结果5 虚函数、继承 易错?
    复试C++14真题 看程序写结果5  虚函数、继承#include<iostream>usingnamespacestd;classA{public:virtualvoidprint(){cout<<"A::print"<<endl;}//voidprint(){cout<<"A::print"<<endl;}};classB:public......
  • (C++20) jthread中stop_token的基础使用
    (C++20)jthread中stop_token的基础使用文章目录(C++20)jthread中stop_token的基础使用C++20jthread使用方式循环判断条件变量condition_variable_anystop回调std::stop_callbackENDC++20jthreadstd::jthread-cppreference.comstd::stop_token-cpprefere......
  • c++简介
    C++(cplusplus)是一种计算机高级程序设计语言,由C语言扩展升级而产生[17],最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的......
  • C++面向对象整理(1)之初识类和对象
    C++面向对象整理(1)之初识类和对象注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的类和对象C++面向对象整理(1)之初识类和对象一、类的定义1、类成员的访问权限2、类定义示例(1)类内定义(2)类外定义成员函数3、类对象(实例)的定义及......
  • C++ static函数调用问题
    静态成员变量虽然在类中,但它并不是随对象的建立而分配空间的,也不是随对象的撤销而释放(一般的成员在对象建立时会分配空间,在对象撤销时会释放)。静态成员变量是在程序编译时分配空间,而在程序结束时释放空间。静态成员的定义和声明要加个关键static。静态成员可以通过双冒号来使用......
  • C++ 重载运算符返回值问题
    事实上,我们的重载运算符返回void、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值。那么什么情况下要返回对象的引用呢?原因有两个:允许进行连续赋值;防止返回对象(返回对象也可以进行连续赋值(常规的情况,如a=b=c,而不......
  • 开发之单元测试—Test_C++的gtest单元测试
    单元测试测试的本质其实都是一样的,都是通过给定参数来执行函数,然后判断函数的实际输出结果和期望输出结果是否一致测试框架gtest采用的是xUnit架构,JUnitPyUnit:PyUnit主要用于进行白盒测试和回归测试C++测试gtest单元测试是Google的一套用于编写C++测试的框架,可以运......
  • C++单例基类
    在C++中实现单例模式可以使用模板和C++11的特性来达到目的。下面是一个简单的示例代码:#include<iostream>template<typenameT>classSingleton{public:staticT&getInstance(){staticTinstance;returninstance;}Singleton(const......
  • C++单例基类
    要实现一个安全的C++单例基类,确保子类不会随便覆盖单例行为,我们可以使用一种技巧,即CRTP(CuriouslyRecurringTemplatePattern)。这种模式使得基类能够访问派生类的私有和保护成员,从而允许我们在基类中实现单例逻辑,并且保证派生类不会破坏这个逻辑。以下是一个使用CRTP实现的单例......