问题标签 [extern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
840 浏览

c++ - C++中extern关键字的问题

以下两个声明有什么区别?我认为它们是等效的,但是第一个示例有效,而第二个示例无效。我的意思是它可以编译并运行,但位图显示代码显示为空白。我还没有完成它,但我错过了一些明显的东西吗?GUI_BITMAP 是描述位图的简单结构。这适用于 VC++ 2005,但我认为它在 VC++ 2008 中也失败了。在这个问题上抓挠我的头......

样品 1:

样本 2:

编辑:更多探索表明第二个示例是创建结构,而第一个示例是指外部结构。第二个示例应该无法链接,因为在全局范围内有两个同名的变量。但它没有,它向放弃的显示代码发送一个零填充结构。嗯……

编辑 2:通过另一个编译器 (IAR) 运行相同的代码实际上无法在示例 2 上编译,并出现关于缺少默认构造函数的错误。所以我猜想“extern”关键字、结构和 C++ 有一些我不明白的微妙之处。如果外部区域中的东西是函数,那么两个样本将是相同的,对吧?

0 投票
1 回答
8090 浏览

c - C:常量结构数组中的外部常量整数

使用外部常量整数初始化结构数组时,我收到一条错误消息“表达式必须具有常量值”。

文件1.c:

文件2.c:

Get_Byte.c:

我还从of 字段中删除了const限定符并得到相同的错误消息。sizeArray_Attributes

data1_size为什么编译器在不同的翻译单元中data2_size抱怨常量值表达式?const unsigned int

我想要一个在编译时生成的 [array address, array size] 常量数组。

ccarm在 Windows XP 上使用 Green Hills 4.24,C 语言不是C++。

0 投票
5 回答
3916 浏览

c++ - 在 C++ 共享库的标头中声明“外部“C””有什么影响?

基于这个问题,我理解了将 C 库与 C++ 代码链接起来的构造的目的。现在假设以下情况:

我有一个用 C++ 编译器编译的“.so”共享库。头文件有一个'typedef stuct'和一些函数声明。如果标头包含 extern "C" 声明...

……效果如何?具体来说,我想知道该声明是否有任何有害的副作用,因为共享库被编译为 C++,而不是 C。

在这种情况下是否有任何理由使用 extern "C" 声明?

0 投票
5 回答
66187 浏览

c++ - 函数上的 C++ extern 关键字。为什么不只包含头文件?

如果我理解正确,这意味着

函数 foo 是在另一个翻译单元中声明的。

1) 为什么不只是#include 声明此函数的标头?

2) 链接器如何知道在链接时在哪里寻找函数?

编辑:也许我应该澄清上面的声明然后使用函数

它从未在此翻译单元中定义。

0 投票
1 回答
1139 浏览

c# - 如何为 System.Core 创建外部别名?

我的项目中绝对需要一个外部别名System.Core。不幸的是,在 .Net 4.0 项目中,您甚至无法添加对的引用,System.Core因为显然构建系统默认包含它。有没有人知道如何强制系统让我为这个库指定一个外部别名?谢谢!

0 投票
4 回答
4669 浏览

c - 将变量放入标头与将变量放入源之间的区别

假设我声明了一个带有变量的头文件:

然后在源文件中,我想使用count. 我是否必须将其声明为:

或者我可以在我的源文件中使用它吗?所有假设我有#include "someheader.h"。还是我应该在源文件中声明它?放入头文件和源文件有什么区别?count还是没关系?

0 投票
5 回答
24195 浏览

c - c语言中的外部和全局

谁能告诉我在 C 程序中使用其中一个EXTERNGLOBAL变量有什么特殊要求吗?如果我从 gloabl 更改为 extern,我看不出像下面这样的程序有任何区别。

如果取消注释extern int myGlobalvar,则值不会改变。

两者有什么correct区别吗?

谁能纠正我?

0 投票
4 回答
1964 浏览

c++ - C++:外部“C”和类成员之间的命名空间冲突

我偶然发现了一个相当奇特的 c++ 命名空间问题:

精简示例:

我想在我的 C++ 成员函数 A::solve 中调用 c 函数solve。编译器对我的意图不满意:

有什么我可以在求解函数前面加上的东西吗?C::solve 不起作用

0 投票
3 回答
6699 浏览

c++ - 如何使用 MSVC 在 C++ 中定义外部 C 结构返回函数?

以下源文件将无法使用 MSVC 编译器 (v15.00.30729.01) 进行编译:

编译cl /c /Tpstest.c产生以下错误:

不编译/Tp(告诉cl将文件视为 C++)工作正常。该文件还可以在 C 和 C++ 模式下在 DigitalMars C 和 GCC(来自 mingw)中正常编译。我也-ansi -pedantic -Wall与 GCC 一起使用,它没有任何抱怨。

由于我将在下面讨论的原因,我们需要将此文件编译为 MSVC 的 C++(而不是其他文件),但函数被编译为 C。本质上,我们想要一个普通的 C 编译器......除了大约六行. 是否有一个开关或属性或我可以添加的东西可以让它工作?


有问题的代码(虽然不是上面的;这只是一个简化的例子)是由代码生成器生成的。

作为其中的一部分,我们需要能够生成浮点 nan 和无穷大作为常量(长话短说),这意味着我们必须在 C++ 模式下使用 MSVC 编译才能真正做到这一点。我们只找到了一种可行的解决方案,而且它只适用于 C++ 模式。

我们包装代码是extern "C" {...}因为我们想要控制修改和调用约定,以便我们可以与现有的 C 代码交互。...也因为我信任 C++ 编译器,就我可以扔一个小百货商店。我也尝试将行包含reinterpret_cast在 中extern "C++" {...},但这当然行不通。遗憾。

我发现了一个潜在的解决方案,它需要重新排序声明,以便完整的结构定义出现函数 foward decl 之前,但是由于 codegen 的执行方式,这非常不方便,所以我真的很想避免不得不如果可以的话,沿着那条路走下去。

0 投票
3 回答
43087 浏览

c - extern 关键字是什么意思?

extern关键字是什么意思?我已经在函数声明之前看到了