ubuntu22.04使用libmysqlclient-dev,在包含mysql.h时会出现‘net_async_status’未声明

//mysql Ver 8.0.41-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
//库文件是libmysqlclient-dev
//在使用 g++编译含mysql.h的文件时,系统使用的是ubuntu22.04
//发现会出现 /usr/include/mysql/mysql.h:486:6: error: use of enum ‘net_async_status’ without previous declaration
//但通过查看头文件发现mysql.h包含了mysql/client_plugin.h,此头文件包含了mysql/plugin_auth_common.h
//net_async_status 就定义在 plugin_auth_common.h,同时也没发现因条件编译导致plugin_auth_common.h未包含和net_async_status的未声明
//所以我采取在mysql.h用条件编译来额外再定义一次来解决此问题,plugin_auth_common.h也同样添加了条件编译预处理
#ifndef DECLARATION_NET_ASYNC_STATUS
#define DECLARATION_NET_ASYNC_STATUS
enum net_async_status {
NET_ASYNC_COMPLETE = 0,
NET_ASYNC_NOT_READY,
NET_ASYNC_ERROR,
NET_ASYNC_COMPLETE_NO_MORE_RESULTS
};
#endif

posted @ 2025-03-01 21:41  haoyouxiaoju  阅读(49)  评论(0)    收藏  举报