[英]Can I have a static array of pointers to functions in C++?
我需要一个全局函数指针数组,并提出了这个:
static int (*myArray[5])();
如果我是对的,这是“返回int的函数的全局指针数组”。 那正确吗? 或者它是“返回静态int的函数的指针数组”。 我只需要快速回答。
应该尽可能简单,但不简单:
typedef int (*t_MyFunc)();
t_MyFunc g_MyFuncArray[5];
如果你愿意, g_MyFuncArray
可以是静态的(但如果你想要一个全局变量, 你不应该这样做 ):
static t_MyFunc g_MyFuncArray[5];
在头文件中,您应该写:
extern t_MyFunc g_MyFuncArray[5];
但是在这种情况下,不要忘记在.cpp
文件中省略static
关键字。
您不希望或不需要全局变量的static关键字。 在使用static的.cpp文件中,将给出变量内部链接(您希望外部链接)。 如果没有静态,myArray在功能上仅对文件是全局的。 如果你希望它对整个程序可见 ,你可以添加extern int (*myArray[MY_FUNC_ARRAY_SIZE])();
到您的.h文件。
static
是存储类说明符,而不是类型说明符或限定符,因此它指定变量的存储类,并且对其类型没有影响。 没有“静态”类型或“返回静态函数”这样的东西 - 只有静态变量和静态函数/方法。
以下链接://www.cdecl.org/很有帮助(实际上我已将其加入书签)。 根据您的定义,它说:
declare myArray as static array 5 of pointer to function returning int
请注意,描述正确地将5指针的数组分类为静态,函数只返回一个int。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.