4

I need a global array of function pointers, and came up with this:

static int (*myArray[5])();

if i am right, this is "a global array of pointers to functions returning int". Is that right? Or is it "an array of pointers to functions returning a static int". I just need a quick answer.

4

4 回答 4

9

应该尽可能简单,但不能更简单:

typedef int (*t_MyFunc)();

t_MyFunc g_MyFuncArray[5];

如果你愿意,g_MyFuncArray可以是静态的(但如果你想要一个全局变量,你不应该):

static t_MyFunc g_MyFuncArray[5];

在头文件中你应该写:

extern t_MyFunc g_MyFuncArray[5];

但不要忘记在这种情况下省略文件中的static关键字。.cpp

于 2013-08-21T21:40:37.127 回答
3

您不需要或不需要全局变量的 static 关键字。在 .cpp 文件中使用 static 会给变量内部链接(你想要外部链接)。如果没有静态,myArray仅对文件在功能上是全局的。如果您希望它对您的整个程序 可见extern int (*myArray[MY_FUNC_ARRAY_SIZE])();,请添加到您的 .h 文件中。

于 2013-08-21T21:43:49.183 回答
1

以下链接://www.cdecl.org/ 很有帮助(实际上我已将其添加为书签)。对于您的定义,它说:

declare myArray as static array 5 of pointer to function returning int

请注意,描述正确地将包含 5 个指针的数组分类为静态,并且该函数只返回一个 int。

于 2013-08-22T00:35:10.363 回答
1

static是存储类说明符,不是类型说明符或限定符,因此它指定了变量的存储类,对其类型没有影响。没有“静态”类型或“返回静态的函数”之类的东西——只有静态变量和静态函数/方法。

于 2013-08-21T23:11:11.517 回答