我可以在C ++中有一个指向函数的静态指针数组吗?

时间:2013-08-21 21:35:10

标签: c++ c pointers

我需要一个全局函数指针数组,并提出了这个:

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

如果我是对的,这是“返回int的函数的全局指针数组”。是对的吗?或者它是“返回静态int的函数的指针数组”。我只需要快速回答。

4 个答案:

答案 0 :(得分: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关键字。

答案 1 :(得分:3)

您不希望或不需要全局变量的static关键字。在使用static的.cpp文件中,将给出变量内部链接(您希望外部链接)。如果没有静态,myArray只对文件功能全局。如果您希望可见到您添加的整个程序中 {。{1}}到您的.h文件。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

以下链接://www.cdecl.org/很有帮助(事实上我已将其加入书签)。根据您的定义,它说:

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

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