...
#include "test1.h"
int main(..)
{
count << aaa <<endl;
}
Run Code Online (Sandbox Code Playgroud)
aaa是在定义中test1.h,我没有使用extern关键字,但仍然可以参考aaa.
所以我怀疑是否extern真的有必要?
我有一个用f2c(Fortran到C转换器)生成的C文件,它包含以下C结构:
struct {
real rez, pi, st;
} const_;
Run Code Online (Sandbox Code Playgroud)
如何const_在不修改f2c生成的变量的情况下将此变量声明为另一个.c文件中的外部变量?
我写了以下程序
#include<stdio.h>
main ()
{
extern int i;
printf("\n%d",i);
}
int i=30;
Run Code Online (Sandbox Code Playgroud)
我期待一个错误消息,因为我在main之后初始化,但相反程序给了我输出.为什么它没有给我一个错误是我想知道的.
我有一个C#extern声明,如下所示:
[DllImport("something.dll")]
public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);
Run Code Online (Sandbox Code Playgroud)
如何将其翻译为F#?
我有一个constants.m文件,它是许多程序常量的集中集合.要设置颜色,我这样做:
@implementation UIColor (UIColor_Constants)
+(UIColor *) defaultResultTableBackgroundColor{
//return [[UIColor colorWithRed:0.6f green:0.004f blue:0.0f alpha:1.0f] retain];
return [[UIColor colorWithRed:0.1f green:0.004f blue:0.3f alpha:0.3f] retain];
}
+(UIColor *) defaultResultHeaderBackgroundColor{
return [[UIColor clearColor] retain];
}
@end
Run Code Online (Sandbox Code Playgroud)
在constants.h我有
@interface UIColor (UIColor_Constants)
+(UIColor *) defaultResultTableBackgroundColor;
+(UIColor *) defaultResultHeaderBackgroundColor;
@end
Run Code Online (Sandbox Code Playgroud)
然后只使用[UIColor defaultResultTableBackgroundColor]我想引用此常量的位置.
我想有一些其他UIColor和UIFont常量,虽然这有效,但似乎比它需要的更复杂.有更简单的方法吗?
我正在包装一个大量使用枚举的库,因此包含许多常量标识符.有没有办法让它们可用于Cython(声明它们extern)并同时使它们可供Python使用?
我搜索这样的东西
cdef extern from *:
public enum:
spam
foo
ham
Run Code Online (Sandbox Code Playgroud)
哪个应该取代
cdef extern from *:
enum:
cspam "spam"
cfoo "foo"
cham "ham"
spam = cspam
foo = cfoo
ham = cham
Run Code Online (Sandbox Code Playgroud)
注意:我知道将extern-declarations移动到.pxd文件以避免命名冲突的选项.
谢谢,尼克拉斯
@interface Foo : NSObject
{
extern int gGlobalVar;
int i;
}
-(void)setgGlobalVar:(int)val;
@end
@implementation Foo
-(void)setgGlobalVar:(int)val
{
i = 5;
NSLog(@"i = %i", i);
gGlobalVar = val;
}
@end
Run Code Online (Sandbox Code Playgroud)
我可以i在接口中声明并在实现中使用它而没有任何错误.但是我不能extern在接口中声明类型的变量.为什么会这样?为什么我会收到一个错误:"类型名称不允许指定存储类"?
我读了几篇帖子并得出结论,extern告诉编译器"这个函数存在,但它的代码在其他地方.不要惊慌." 但链接器如何知道函数的定义位置.
我的案例: - 我正在研究Keil uvision 4.有一个头文件grlib.h,主函数在grlib_demo.c(它包含grlib.h).现在,有一个函数GrCircleDraw()在Circle.c中定义并在grlib_demo.c中调用,还有一个语句
extern void GrCircleDraw(所有参数);
在grlib.h中.我的查询是链接器如何知道GrCircleDraw()的定义,因为Circle.c不包含在grlib.h和grlib_demo.c中
注意: - 文件grlib.h和Circle.c位于同一文件夹中.代码运行成功.
我想为用Haskell(GHC)编写的代码提供回调函数.它使用类似GCC C编译器的函数类型来导出/导入功能,并在运行时与我的代码进行互操作.
我必须提供一个回调函数,它实际上接受this指向该类的指针并只调用它的方法:
struct C
{
int f(int i) { ; }
static int f_callback(void * self, int i)
{
static_cast< C * >(self)->f(i);
}
};
Run Code Online (Sandbox Code Playgroud)
逻辑上f_callback是类的一部分C,因此我将它放入相应的命名空间范围.
但我担心我应该使用extern "C"语言规范(调用约定在这里是重要的,而不是名称错误)?这是可能的声明和定义extern "C"在平原命名空间功能,有一对夫妇的特殊规则,extern "C"在不同的命名空间具有相同的名称定义的功能,但有类范围的命名空间和简单的一个命名空间之间没有区别.
是否可以将static extern "C"函数定义到类范围?