gcc - 错误:'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;
解决方案
我发现了问题。不知何故, async.h 被替换/更改,它不再具有 redisAsyncContext 结构的定义。我从互联网上下载了相应的文件,构建工作正常。我应该在发布问题之前彻底检查它-mybad
推荐阅读
- monaco-editor - 在 Monaco Editor 中设置背景图像或渐变
- python - 将熊猫数据框中的一列整数转换为带有前导零的月份
- python - 如何从 Python 中的输入依赖函数创建 for 循环?
- json - kafka connect Json Schema有什么用?
- javascript - 如何根据 Vue JavaScript 中返回的键对该数组进行分段?
- android - (它没有 rc01)清单合并失败:属性 application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory)
- ruby-on-rails-5 - 用户下载 ActiveStorage blob 附件时如何更新数据库?
- python-3.x - 从 url 导入数据集并在 python3 中将文本转换为 csv
- python - 列表上的 Python 不支持的操作数类型
- c++ - 如何解决“无法在地址 c++ 访问内存”问题