Предупреждение компилятора - PullRequest
0 голосов
/ 14 марта 2012

У меня есть кусок кода, когда он скомпилирован, выдает мне это предупреждение

#define SKM_sk_set_cmp_func(type, st,cmp) \
        ((int (*)(const type * const *,const type * const *)) \
        sk_set_cmp_func(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_SK_CMP_FUNC(type, cmp)))

#define sk_X509_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509, (st), (cmp))

static int mrs_X509_cmp_callback(const X509 **a, const X509 **b);

int foo()
{
       STACK_OF(X509) *certs;

       (void)sk_X509_set_cmp_func(certs, mrs_X509_cmp_callback);
}

In function foo:
warning: pointer type mismatch in conditional expression

Не могли бы вы, ребята, дать мне знать, как избавиться от предупреждающего сообщения?

1 Ответ

2 голосов
/ 14 марта 2012

На самом деле в вашем коде есть несколько разных проблем. Во-первых, предполагается, что foo возвращает int, но вы не возвращаете никакого типа ... который, по крайней мере, выдаст предупреждение компилятора, если вообще не скомпилирует. Во-вторых, в нынешнем виде кажется, что ваш макрос пытается выполнить приведение указателя функции, возвращенного из sk_set_cmp_func, но затем кажется, что вы пытаетесь привести указатель этой функции к типу void ... по крайней мере, вы должны привести его к void*, так как вы возвращаете указатель на функцию. Тем не менее, в конце концов, приведение не имеет никакого смысла в контексте foo, как написано, так как эта функция должна возвращать тип int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...