将变量传递给C中的其他函数

时间:2019-08-28 09:01:56

标签: c redis

我在C中有以下代码:

int main(int argc, char **argv) {

    ...

    redisContext *c;
    redisReply *reply;

    ...

    outer_function(...)

    return 0;

}

我想在Redis中使用outer_function变量。

我尝试为此在struct之前添加一个main(...)

typedef struct {
    redisReply reply;
    redisContext c;
} redisStuff;

main中:

redisContext *c;
redisReply *reply;

redisStuff rs = { reply, c };

...

outer_function((u_char*)&rs, ...)

最后在我的outer_function中:

void outer_function(u_char *args, ...) {
    redisStuff *rs = (redisStuff *) args;
    reply = redisCommand(c, "MY-REDIS-COMMAND");
    ...    
    return;
}

但是它失败了:

warning: incompatible pointer to integer conversion initializing 'int' with an expression of type 'redisReply *' (aka 'struct redisReply *')

2 个答案:

答案 0 :(得分:3)

您的结构需要值,并且您正在传递指针,因此编译器无法将指针分配为redisContext

typedef struct {
    redisReply reply;  // <- expects value
    redisContext c;    // <- expects value
} redisStuff;

...

redisContext *c;
redisReply *reply;

redisStuff rs = { reply, c };  // <- reply and c are pointers

答案 1 :(得分:1)

void outer_function(redisContext  *c, redisReply **reply) {
    *reply = redisCommand(c, "MY-REDIS-COMMAND");
    ...    
    return;
}

int main(int argc, char **argv) {
    ...
    redisContext *c;
    redisReply *reply;
    ...
    outer_function(c,&replay);
    return 0;
}
相关问题