草庐IT

HK_EXTERN

全部标签

c++ - extern 在 C++ 中如何工作?

这是来自:namespacestd{externistreamcin;///似乎通过使用extern其他命名空间中定义的数据类型是否可用? 最佳答案 extern表示“这些变量在其他一些编译单元(.cpp或.lib文件)中定义”在这种情况下,您#include进入你的.cpp文件,因为cin和cout被声明为extern,编译器会让你毫无怨言地使用它们。然后,当链接器运行时,它会查找所有extern变量并将其全部排序。 关于c++-extern在C++中如何工作?,我们在StackOve

c++ - 如果我将 extern "C++"与 C 工具链一起使用会怎样?

我的问题主要是关于C++工具链“理解”C和C++的事实,所以如果我将一些带有extern"C"的代码提供给C++工具链,我假设它可以理解怎么办?但是,如果我将带有extern"C++"的代码提供给C工具链呢?预期的行为是什么? 最佳答案 如果编译器还理解C++,它可能会接受它。如果它是一个纯C编译器,它将反对(就像它在extern"C"上一样,因为该语法无效C-这就是为什么它通常包含在#ifdef__cplusplus或类似的) 关于c++-如果我将extern"C++"与C工具链一起使

c++ - extern"C"与 extern 的区别

我对整个header使用extern"C"说明符,还是为每个函数指定extern有区别吗?据我所知,没有,因为只有函数和变量可以外部链接,所以当我在每个函数原型(prototype)和外部变量之前使用extern说明符时,我不需要使用全局extern"C"声明!?示例A:#ifdef__cplusplusextern"C"{#endifvoidwhatever(void);#endif示例B:externvoidwhatever(void); 最佳答案 C++文件中extern"C"的存在允许从C客户端调用程序代码调用特定的C++函

c++ - extern "C"如何允许 C 文件中的 C++ 代码?

为了在C文件中使用C++代码,我读到我们可以做extern"C"{(c++代码在这里)},但是当我尝试打印一些东西使用cout,我不断收到错误消息,因为它无法识别库。我想我只是对extern"C"如何允许您在C中使用C++代码感到困惑。 最佳答案 恰恰相反。您可以使用externC添加要使用C++编译器编译为C代码的代码。除非我遗漏了什么,否则您无法使用C编译器编译C++代码。 关于c++-extern"C"如何允许C文件中的C++代码?,我们在StackOverflow上找到一个类似的

c++ - 为什么 "extern int &c;"工作正常?

在C++中,必须初始化引用变量。诠释&a;//错误staticint&b;//Error但是externint&c;//Noerror为什么编译器不为extern说明符引用给出错误? 最佳答案 extern关键字是编译器的指令,您现在正在声明一个符号,该符号将在链接期间填充,取自另一个目标文件。初始化预计发生在定义实际符号的地方。如果你有一个a.c文件intfoo;int&bar=foo;还有一个b.c文件externint&bar;当您将文件b.c编译成b.o时,编译器会将bar的符号留空。链接程序时,链接器需要在a.o中找到导出

为什么“ const extern”出现错误?

以下代码正常工作:#includeexternintfoo;//Withoutconstantintfoo=42;intmain(){printf("%d\n",foo);return0;}但是,以下代码给出了一个错误:#includeconstexternintfoo;//Withconstantintfoo=42;intmain(){printf("%d\n",foo);return0;}所以,为什么constextern给出错误?看答案标准说:C11-6.7/4在同一范围内参考相同对象或函数的所有声明均应指定兼容类型constint和int对于同一对象不兼容foo在同一范围内。

C语言之extern “C“详解与使用方法

前言在你工作过的系统里,不知能否看到类似下面的代码。这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们的代码都是这样写的,从来没有因此碰到过什么麻烦啊~”。你说的没错,如果你的头文件从来没有被任何C++程序引用过的话。这与C++有什么关系呢?看看__cplusplus(注意前面是两个下划线)的名字你就应该知道它与C++有很大关系。__cplusplus是一个C++规范规定的预定义宏。你可以信任的是:所有的现代C++编译器都预先定义了它;而所有C语言编译器则不会。另外,按照规范__cplusplus的值应该等于199711L,然而不是所有的编译器都照此实现,比如g++编译器就将它的值定义为1。所

变量的四大存储类型static extern auto register

变量的四大存储类型staticexternautoregister外部变量(全局变量)extern----全局静态存储区定义引用性声明❗易错点:函数之外未定义的变量一般是外部变量extern全局变量与局部变量的区别‼️谨记:声明可以多次,定义只能一次extern的生存周期静态存储类—static定义❗易错点:static变量的值只会在第一次初始化时被赋值,之后在函数调用之间保持不变。static的生存周期—取决于程序运行周期,不仅仅在函数调用期间extern与static的作用域和周期的不同作用域:周期:auto自动存储类别—默认—动态存储register——寄存器存储存储在内存中CPU寄存器

static、extern、inline 说明符和链接属性

概述-Overview在我初学C++时,static、inline、extern可能是最令我迷惑的C++说明符,原因是它们在不同的语境下会发挥不同的作用,而且某些说明符的含义已经和以前不同,这加剧了我在查询资料时的困扰。所以今天决定好好总结一下。首先要介绍C++的两个概念:存储期和链接。存储期-StoragedurationC++程序中,任何对象[1]都有一个存储期,它是下列四个之一:自动存储期:对象在代码块开始时分配,代码块结束时解分配。静态存储期:对象在整个程序开始时分配,程序结束时解分配。线程存储期:对象在某个线程开始时分配,线程结束时解分配。动态存储期:对象使用某些特定的表达式来进行分

C++ extern的妙用

在C++编程中,extern关键字的使用是一种强大的工具,它允许我们在一个源文件中声明变量或函数,而在另一个源文件中定义它。这样,我们可以方便地共享代码和数据,同时保证了编译的独立性,使项目结构更加清晰。一、extern关键字的基础知识在C++中,extern关键字主要用于声明一个变量或函数的作用范围(scope)是全局的。当我们在一个源文件中使用extern关键字声明一个变量或函数时,其他源文件就可以访问和修改这个变量或函数。二、extern关键字的典型用法1.共享全局变量使用extern关键字可以方便地在多个源文件中共享全局变量。在定义全局变量时,我们只需要在一个源文件中使用extern关