问题标签 [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 投票
1 回答
197 浏览

c++ - 如何优化对 C++ 中接口的外部引用?

使用 VC8,我创建了两个类似于以下的模块:

标题

模块 A

模块 B

VC8 通过本质上将 'Foo' 视为指向 IFoo 的指针来处理这个问题。无论在哪里看到 Foo.Bar()(即使在模块 B 中),它都会取消引用指针以获取对象的 vtable,查找 Bar() 的地址并调用它。这有点烦人,因为 Foo 实际上确实指的是一个具体的对象,而且总是如此。如果您可以执行以下操作,那就太好了:

模块 A

这会告诉编译器你承诺提供一个具体的对象来支持这个引用。然后它可以生成对 Foo.Bar() 的特殊外部引用并直接调用该方法而无需双重取消引用。

据我所知,Visual C++ 无法做到这一点,这会导致两个问题:

  1. 有没有办法让 VC 编译器生成直接方法调用?
  2. 有没有其他 C++ 编译器可以做到这一点?
0 投票
1 回答
634 浏览

c - 如何在 C 模块中将两个全局“const”变量定义为相同的值?

我在我的一个文件中使用了一对全局变量,与两个不同文件中.c的单个声明相匹配(好吧,一个文件,两种方式预处理)。一种是公用的,一种是私人使用的。两者都是变量。extern.h.hconst

我只想初始化.c文件中的一个变量,然后将第二个变量分配给相同的内容。以下是目前文件的相关内容.c

…以及相应的.h:

这里的目标是确保当.h包含在EXTERNALIZE定义中时,包含文件可以访问Paws__List变量,extern'd 到我的.c文件中的定义。但是,如果在没有该定义的情况下包含它,他们将获得对extern'd的访问权限List(我打算在我的内部文件中使用它,并在用户需要时提供#include)。

但是,Paws__List = List分配在我的编译器中爆炸了,出现以下错误:

我正在寻找任何可以帮助我完成上述工作的帮助(也就是说,const在我的文件中为同一个结构定义两个名称,以便标题.c可以引用一个或另一个。).h

0 投票
1 回答
425 浏览

iphone - 在目标 c 中全局访问实例变量

我是 iphone 开发新手。我想在另一个视图中访问在一个视图中声明的变量。我如何实现它。是否可以使用外部变量,如果可以,如何声明和实现它。我可以通过使用委托?那么如何实现它。请指导我。我正在浏览谷歌以获得实现它的想法,我想出了委托和外部变量,但我不知道如何实现或使用这些方法(委托,外部变量)。请告诉我实现它的正确方法。谢谢。

0 投票
2 回答
5839 浏览

c++ - 如何在命名空间中正确使用 extern?

我正在努力让 rLog 在 Windows 下构建为 DLL,并且我遇到了与 rlog 命名空间中的一些全局符号相关的未定义符号错误。特别是在 RLogChannel.cpp 中的这些:

我认为问题是 1)它们没有被导出,2)它们没有在标题中声明,所以其他东西可以访问它们。所以我向它们添加了一个 __declspec(dllexport) (通过 RLOG_DECL 宏),并在标题中输入:

但是,无论我如何在 RLogChannel.cpp 中声明变量,我都会收到重新定义错误,尽管我在标题中将它们外部化了......这样做的正确方法是什么?似乎它应该很简单,但我不能完全理解它。

编辑:错误信息

(所有 4 个符号相同)

编辑:我不知道发生了什么,之前的代码完全一样,但现在它会编译(感觉就像 MSVC 的怪异......),不幸的是,当链接到我的库时,符号仍然显示为未解析

0 投票
4 回答
8583 浏览

c++ - 使用 extern 在 C 或 C++ 中包含文件

这在 C 或 C++ 中如何工作?

0 投票
4 回答
852 浏览

c - 与extern关键字使用有关的疑问

AFAIK,extern 关键字应该用于声明,并且没有值可以与使用 extern 关键字声明的变量相关联。但是假设我写了一个像

编译器是否应该标记相同的错误?我已经看到一些编译器容忍并忽略了这一点?为什么会这样?“C”标准对此有何评论?

编辑:@All,感谢您的回答。不过,我仍有疑问。假设我在另一个文件中定义了这个变量而没有外部链接,比如 ac,我在 bc 中添加了这个语句,编译器不标记错误是否可以?它会被重新定义吗?

0 投票
2 回答
465 浏览

c++ - 为什么这个单独的定义会导致错误?

挑战:

我有这个无法编译的代码。你能弄清楚什么是错的吗?曾经让我很头疼。

乍一看,它看起来是正确的。有多少,哪些是错误!?

0 投票
2 回答
658 浏览

c - extern "C" 在 msvc++ 9.0 中无效

我为两个编译器管理 JNI 项目:MSVC++ 8.0 和 9.0,我的 cpp 文件包含以下实现: extern "C" { JNIEXPORT jlong​​ JNICALL Java_context_ServiceProviderContext_StartServiceProvider (JNIEnv * env, jclass, jstring jspath){ ..... }

在depends.exe 实用程序的帮助下,我可以看到MSVC 8.0 成功导出了预期的函数:Java_context_ServiceProviderContext_StartServiceProvider 但是在MSVC 9.0 下编译让我抓狂,它的导出就像完全忽略extern "C" 一样。depends.exe 向我展示:_Java_context_ServiceProviderContext_StartServiceProvider@12

有谁知道 9.0 项目中究竟是什么导致了这种行为?

0 投票
5 回答
4790 浏览

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

这是来自<iostream>

似乎通过使用extern其他命名空间中定义的数据类型将可用?

0 投票
3 回答
547 浏览

c++ - 在 C++ 中理解外部

通过使用extern,我们声明cin在其他单元中定义的作为答案

但是如果istream在中定义/未定义std,应该会有一些区别,对吧?

编译器有什么区别?