所以,我有一个函数指针定义为:
unsigned static int (*current_hash_function)(unsigned int);
我正在尝试制作一个指向函数名称的指针映射:
typedef std::map<fptr_t, std::string> function_map_t;
但是我收到了这个错误:
src / main.h:24:错误:ISO C ++禁止声明
‘fptr_t’
没有类型
其他代码:
的 main.h :
typedef (*fptr_t)(unsigned int*);
typedef std::map<fptr_t, std::string> function_map_t;
function_map_t fmap;
答案 0 :(得分:1)
你的“main.h”代码没有给函数指针typedef一个返回类型。这对我有用:
#include <map>
#include <string>
int main()
{
typedef unsigned (*fptr_t)(unsigned);
typedef std::map<fptr_t, std::string> function_map_t;
function_map_t fmap;
}
答案 1 :(得分:1)
您错过了返回类型:
typedef int (*fptr_t)(unsigned int*);
答案 2 :(得分:0)
你还记得键入dede函数指针吗?
typedef unsigned int (*fptr_t)(unsigned int);
我相信这是正确的语法
答案 3 :(得分:0)
你的函数指针的typedef是:
typedef unsigned int (*fptr_t)(unsigned int)
...然后你可以像这样宣布你的地图:
typedef std::map<fptr_t, std::string> function_map_t;
答案 4 :(得分:0)
您的typedef
函数指针缺少返回类型:
typedef unsigned int (*fptr_t)(unsigned int *);
以上是指向函数的指针的typedef
,该函数返回unsigned int
并且unsigned int *
作为参数。