extern专题提供extern的最新资讯内容,帮你更好的了解extern。
以下代码取自 here.我在Windows 7上工作时删除了所有Windows NT部分. 我复制了这段代码并在visual studio 2010中运行(新项目 – > VC – > CLR-> CLR控制台……).但它提供了许多未解决的外部’c’错误,如代码下方列出的那样.我犯了什么错? #define STRICT 1 #include <windows.h> #include <io
我们知道我们可以在c中直接使用c函数,那么当extern“C”需要时呢? 如果您的函数在.c文件中实现,则.cpp文件将需要extern“C”引用,否则它们将引用一个被破坏的C -style函数名,链接将失败. 从DLL中导出函数也很方便,因此它们以非标记名称导出.
        最近在做核心战斗,大量用到了类,不得不说cocos2dx 2.2.2 自带的类方法真是写的太不好了,有一个很初级的bug,另外缺少超类方法。         初级bug是原作者在new方法里,连:和.都没搞清楚。         重新写了一下该文件:          function super(TmpClass) return TmpClass.super end --Crea
嗨,我有这个头文件: #import <Foundation/Foundation.h> @interface PCConstants : NSObject extern NSString *const kPCUserProfileKey; extern NSString *const kPCUserProfileNameKey; extern NSString *const kPCUserPr
由于使用Swift 2.2对Xcode 7.3的更新,我无法从外部Objective-C库访问变量。 从今天起,我可以访问这个变量: extern NSString* const DEFAULT_URL; 这是在预编译的.a框架的Objective-C头文件中定义的。 在我的swift代码中,我只需要调用DEFAULT_URL。 从Swift 2.2起,我得到以下错误: Use of unreso
例如:编译成dll,将dll拷贝到lua的clibs目录下  lua程序设计中的例子 一、初稿 #include <stdio.h> #include"lua.hpp" #include <limits.h> #pragma comment(lib,"lua5.1.lib") #define BITS_PER_WORD (CHAR_BIT*sizeof(unsigned int)) #define
我无法理解为什么这不起作用. extern int i; int main() { printf(" %d ", i); } static int i =3; 此外,这不起作用: extern int i; static int i =3; int main() { printf(" %d ", i); } 但是如果静态变量在extern声明之前定义它的工作原理: stat
我想为用 Haskell(GHC)编写的代码提供回调函数.它使用类似GCC C编译器的函数类型来导出/导入功能,并在运行时与我的代码进行互操作. 我必须提供一个回调函数,它实际上接受这个指向类的指针并只调用它的方法: struct C { int f(int i) { ; } static int f_callback(void * self, int i) {
我有一个用f2c(Fortran到C转换器)生成的C文件,它包含以下C结构: struct { real rez, pi, st; } const_; 如何在不修改f2c生成的变量的情况下将此const_变量声明为另一个.c文件中的外部变量? 在另一个文件中. extern struct { real rez, pi, st; } const_;
我有一个混合C和C的项目.在C头文件中,我有这样的代码: typedef struct mystruct* mystruct; struct mystruct { // whatever struct needs }; 要在C文件中使用它,我正在做: extern "C" { #include "mystruct.h" } 所以你看到我正在使用相同的名称创建一个不透明的指针.这在C中很好,
我正在尝试创建一个基于Qt 5.1的简单C测试应用程序配置KMS功能测试(qtbase / config.tests / qpa / kms),这是失败的.应用程序非常简单,如下所示: #include <stdlib.h> extern "C" { #include <gbm.h> #include <xf86drmMode.h> #include "xf86drm.h" } #include
基于 this question,我理解了将C库与C代码链接起来的构造的目的.现在假设如下: 我有一个用C编译器编译的’.so’共享库.标题有一个’typedef stuct’和许多函数声明.如果标题包含extern“C”声明…… #ifdef __cplusplus extern "C" { #endif // typedef struct ...; // function decls
我的问题主要是关于C工具链“理解”C和C的事实,所以如果我将一些带有extern“C”的代码提供给c工具链,我认为它可以理解该怎么做;但是,如果我将带有extern“C”的代码提供给C工具链呢? 预期的行为是什么? 如果编译器也理解C,它可以接受它.如果它是一个纯C编译器,它将对象(就像它在外部“C”上一样,因为该语法无效C – 这就是为什么它通常用#ifdef __cplusplus或其他一些包
我听说你不应该在头文件中定义任何东西,因为有多个定义的可能性,但如果你有包含警卫,这不应该发生,对吧?还有哪些其他原因可以为变量添加extern? 包含防护仅仅防止在单个 translation unit(也称为编译单元)中多次包含标头.这并未解决链接时单独翻译单元的多个定义问题.因此,您应该只在头(.h)文件和源(.c)文件中定义声明.
这来自< iostream>: namespace std { extern istream cin; ///< Linked to standard input extern ostream cout; ... 看来通过使用extern,其他命名空间中定义的数据类型是否可用? extern用于引用在不同编译单元中定义的变量(现在,您可以将编译单元视为.cpp文件).示例
clang, gcc和VS2013都抱怨在main()中重新定义w,但是我在标准中找不到不允许的东西. namespace N { extern int j; int j; } int main() { extern int w; int w; } 这些段落介绍了在块范围内使用extern声明的一些内容,但是似乎没有证明错误信息的正当性: §3.3.1/ 4 Gi
只要我有一个包含声明为void g(void(* callback)())的函数的C库;以下代码优雅但非法: struct A { // error C2159: more than one storage class specified (VC++ Nov 2012 CTP) static extern "C" void callback() {} }; g(A::ca
请考虑代码: #include <iostream> using namespace std; extern "C" void foo( void ); namespace A { template< int No > class Bar { private: friend void ::foo( void );
尝试使用一个extern“C”函数做一个类的朋友,这段代码的作用是: #include <iostream> extern "C" { void foo(); } namespace { struct bar { // without :: this refuses to compile friend void ::foo(); bar() : v(666) {
我知道你可以通过使用“extern”在Objective-C中定义一个全局变量,但我只是意识到,在我的第一个方法之前,我已经在.m文件顶部声明的变量也是意外的全局性的(这导致了一些问题).我把它们移动到我的头文件的@interface部分,我认为它正确地声明它们只存在于类中,这解决了我的一些问题,但我仍然有点困惑. 将变量声明为extern并将其放在.m文件的顶部有什么区别?还是做同样的事情? e