首页 > 解决方案 > 错误:'redisAsyncContext' 没有命名类型 redisAsyncContext *context;

问题描述

当我包含 libevent.h 时,我遇到了一个非常特殊的错误。它无法找到 redisAsyncContext 结构。这是我的头文件

#include <hiredis/hiredis.h>
#include <hiredis/async.h>
#include <hiredis/adapters/libevent.h>

class RedisMgr :Thread{
public:
    
    static RedisMgr  *getRedisMgr ();
    int Init();
    void Start();
    int End();
    void* run();

    int Publish(int type);
    
private:
    static RedisMgr s_instance;

    bool exitThread;
    
    redis_t Pub_Redis;
    sem_t redis_publock;

    RedisMgr();
    ~RedisMgr ();

    static void pubCallback(redisAsyncContext *c, void *r, void *privdata);
    void pubCallback_Handler(redisAsyncContext *c, void *r, void *privdata);
    static void connectCallback(const redisAsyncContext *c, int status);
    void connectCallback_Handler(const redisAsyncContext *c, int status);
    static void disconnectCallback(const redisAsyncContext *c, int status);
    void disconnectCallback_Handler(const redisAsyncContext *c, int status);
};

该错误是从包含的文件 libevent.h 和我在 .h 中所做的 refisAsyncContext 引用中引发的

这是错误:

/usr/include/hiredis/adapters/libevent.h:11:5: error: 'redisAsyncContext' does not name a type
     redisAsyncContext *context;

src/headers/RedisMgr.h:36:5: error: 'redisAsyncContext' does not name a type
     redisAsyncContext *c;

标签: gccredisembedded-linuxhiredis

解决方案


我发现了问题。不知何故, async.h 被替换/更改,它不再具有 redisAsyncContext 结构的定义。我从互联网上下载了相应的文件,构建工作正常。我应该在发布问题之前彻底检查它-mybad


推荐阅读