问题标签 [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.
c++ - 如何优化对 C++ 中接口的外部引用?
使用 VC8,我创建了两个类似于以下的模块:
标题
模块 A
模块 B
VC8 通过本质上将 'Foo' 视为指向 IFoo 的指针来处理这个问题。无论在哪里看到 Foo.Bar()(即使在模块 B 中),它都会取消引用指针以获取对象的 vtable,查找 Bar() 的地址并调用它。这有点烦人,因为 Foo 实际上确实指的是一个具体的对象,而且总是如此。如果您可以执行以下操作,那就太好了:
模块 A
这会告诉编译器你承诺提供一个具体的对象来支持这个引用。然后它可以生成对 Foo.Bar() 的特殊外部引用并直接调用该方法而无需双重取消引用。
据我所知,Visual C++ 无法做到这一点,这会导致两个问题:
- 有没有办法让 VC 编译器生成直接方法调用?
- 有没有其他 C++ 编译器可以做到这一点?
c - 如何在 C 模块中将两个全局“const”变量定义为相同的值?
我在我的一个文件中使用了一对全局变量,与两个不同文件中.c
的单个声明相匹配(好吧,一个文件,两种方式预处理)。一种是公用的,一种是私人使用的。两者都是变量。extern
.h
.h
const
我只想初始化.c
文件中的一个变量,然后将第二个变量分配给相同的内容。以下是目前文件的相关内容.c
:
…以及相应的.h:
这里的目标是确保当.h
包含在EXTERNALIZE
定义中时,包含文件可以访问Paws__List
变量,extern
'd 到我的.c
文件中的定义。但是,如果在没有该定义的情况下包含它,他们将获得对extern
'd的访问权限List
(我打算在我的内部文件中使用它,并在用户需要时提供#include
)。
但是,Paws__List = List
分配在我的编译器中爆炸了,出现以下错误:
我正在寻找任何可以帮助我完成上述工作的帮助(也就是说,const
在我的文件中为同一个结构定义两个名称,以便标题.c
可以引用一个或另一个。).h
iphone - 在目标 c 中全局访问实例变量
我是 iphone 开发新手。我想在另一个视图中访问在一个视图中声明的变量。我如何实现它。是否可以使用外部变量,如果可以,如何声明和实现它。我可以通过使用委托?那么如何实现它。请指导我。我正在浏览谷歌以获得实现它的想法,我想出了委托和外部变量,但我不知道如何实现或使用这些方法(委托,外部变量)。请告诉我实现它的正确方法。谢谢。
c++ - 如何在命名空间中正确使用 extern?
我正在努力让 rLog 在 Windows 下构建为 DLL,并且我遇到了与 rlog 命名空间中的一些全局符号相关的未定义符号错误。特别是在 RLogChannel.cpp 中的这些:
我认为问题是 1)它们没有被导出,2)它们没有在标题中声明,所以其他东西可以访问它们。所以我向它们添加了一个 __declspec(dllexport) (通过 RLOG_DECL 宏),并在标题中输入:
但是,无论我如何在 RLogChannel.cpp 中声明变量,我都会收到重新定义错误,尽管我在标题中将它们外部化了......这样做的正确方法是什么?似乎它应该很简单,但我不能完全理解它。
编辑:错误信息
(所有 4 个符号相同)
编辑:我不知道发生了什么,之前的代码完全一样,但现在它会编译(感觉就像 MSVC 的怪异......),不幸的是,当链接到我的库时,符号仍然显示为未解析
c++ - 使用 extern 在 C 或 C++ 中包含文件
这在 C 或 C++ 中如何工作?
c - 与extern关键字使用有关的疑问
AFAIK,extern 关键字应该用于声明,并且没有值可以与使用 extern 关键字声明的变量相关联。但是假设我写了一个像
编译器是否应该标记相同的错误?我已经看到一些编译器容忍并忽略了这一点?为什么会这样?“C”标准对此有何评论?
编辑:@All,感谢您的回答。不过,我仍有疑问。假设我在另一个文件中定义了这个变量而没有外部链接,比如 ac,我在 bc 中添加了这个语句,编译器不标记错误是否可以?它会被重新定义吗?
c++ - 为什么这个单独的定义会导致错误?
挑战:
我有这个无法编译的代码。你能弄清楚什么是错的吗?曾经让我很头疼。
乍一看,它看起来是正确的。有多少,哪些是错误!?
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 项目中究竟是什么导致了这种行为?
c++ - extern 在 C++ 中是如何工作的?
这是来自<iostream>
:
似乎通过使用extern
其他命名空间中定义的数据类型将可用?