繁体   English   中英

静态const函数指针C

[英]static const function pointers C

我的问题非常接近这一点: 如何声明函数指针的const数组?

我在我的包含文件中成功创建了静态const函数指针数组。

void fun1( void* );
void fun2( void* );
typedef void ( *funPointer )( void* );
funPointer myFunPointer[2] = { &fun1, &fun2 };

现在,我发现了以下内容:我的编译器(gcc 4.6.3)抱怨

(1)编译包含此头的不同* .o文件,然后将它们链接在一起(多个定义)-这有助于在数组的声明中使用static关键字(编辑:实际上,这些函数必须声明为static)。

(2)编译包含头文件的文件,而不设置数组const。 (myFunPointer已声明但未使用)

static const myFunPointer[2] ....

抓住两个错误/警告。

现在的问题是:我可以解释以前的行为,因为static使用“预定义”内存地址,并且该函数的多个声明将在该地址处合并。 这个解释正确吗? 如何解释缺少const声明的警告? 编译器是否具有自动删除文件不必要部分的功能...?

在您的头文件中...

void fun1( void* );
void fun2( void* );
typedef void ( *funPointer )( void* );
extern funPointer myFunPointer[2];

并在您的一个 文件中...

funPointer myFunPointer[2] = { fun1, fun2 };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM