C中的typedef函数用法

时间:2013-06-19 22:07:22

标签: c++ c rsa

我正在尝试调用以下函数,但我无法弄清楚如何填写第三个参数。

RSA* PEM_read_RSAPrivateKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u);

查找pem_password_cb我发现:

typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata);

我理解带有函数指针的typedef,但这似乎不是函数指针。任何人都可以帮我一个第三个参数的例子吗?我无权访问pem_password_cb的实现。

3 个答案:

答案 0 :(得分:5)

你是对的:这是函数类型的typedef,而不是指针。但函数PEM_read_RSAPrivateKey会收到指向它的指针:pem_password_cb *cb

用法就像任何其他函数指针一样:

int some_func(char *buf, int size, int rwflag, void *userdata) {
    return 0;
}

PEM_read_RSAPrivateKey(NULL, NULL, some_func, NULL);

答案 1 :(得分:2)

/* Your function definition is like this. */

int my_pem_password_cb_fun(char *buf, int size, int rwflag, void *userdata)
{
    /* your stuff */
}

您将my_pem_password_cb_fun作为第三个参数传递。

pem_password_cb只是一个typedef,它不是实现。你需要实现一个函数[my_pem_password_cb_fun()],它接受typedef中给出的参数。

答案 2 :(得分:1)

这是函数的typedef。

但请注意,参数pem_password_cb *cb是一个指针。所以这个参数确实是一个函数指针。

所以你只需要实现一个匹配int pem_password_cb(char *buf, int size, int rwflag, void *userdata);签名的函数。