GMP内存管理功能的Clang错误

时间:2014-08-01 09:37:19

标签: c++ gcc clang gmp

我有一些使用GMP的代码,它可以用g ++进行编译和运行。

...
// get ptrs to GMP memory management functions
void *(*alloc_func_ptr) (size_t);
void *(*free_func_ptr) (void *, size_t);
mp_get_memory_functions(&alloc_func_ptr, NULL, &free_func_ptr);
...

但是当我使用最新的clang ++编译它时会抛出此错误

gmpxx_boost_serialization.h:127: error: no matching function for call to '__gmp_get_memory_functions'
mp_get_memory_functions(&alloc_func_ptr, NULL, &free_func_ptr);

其中 mp_get_memory_functions 是一个宏

#define mp_get_memory_functions __gmp_get_memory_functions
__GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t),
                  void *(**) (void *, size_t, size_t),
                  void (**) (void *, size_t)) __GMP_NOTHROW;

为什么clang抱怨?

1 个答案:

答案 0 :(得分:2)

尝试改变:

void *(*free_func_ptr) (void *, size_t);

为:

void (*free_func_ptr) (void *, size_t);

根据声明,“mp_get_memory_functions”的第三个参数是函数指针的地址(函数返回“void”而不是“void *”)