加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c与旧库的兼容性

发布时间:2020-12-16 05:04:11 所属栏目:百科 来源:网络整理
导读:我有一个库1-1.h. #include 1-1.h; 哪个有结构: struct bucket { ... } 不幸的是,这个库是三方的,他们已经在1.2中将struct bucket更改为bucket_t {…}.我的所有代码都使用了bucket,但我也希望它与bucket_t兼容. 是否有可能: #ifndef bucket typedef bucket
我有一个库1-1.h.
#include <1-1.h>;

哪个有结构:

struct bucket { ... }

不幸的是,这个库是三方的,他们已经在1.2中将struct bucket更改为bucket_t {…}.我的所有代码都使用了bucket,但我也希望它与bucket_t兼容.

是否有可能:

#ifndef bucket
    typedef bucket_t bucket;
#endif

(代码不起作用,但如果存在,我想将bucket设置为bucket_t.谢谢.

解决方法

一种选择是在项目或makefile中添加自己的预定义符号,以指定您使用的版本.像LIBRARY1_1或LIBRARY1_2之类的东西.如果两者都未定义报告错误.您可以使用自己的包含文件,如下所示.

如果您使用的每个版本的头文件不同…

my1-1.h

#if defined( LIBRARY1_1 )
#include <1-1.h>
#elif defined( LIBRARY1_2 )
#include <1-2.h>
typedef bucket_t bucket
#else
#error Please define LIBRARY1_1 or LIBRARY1_2 before including this file
#endif

如果每个版本的标题使用相同的文件名…

my1-1.h

#include <1-1.h>
#if defined( LIBRARY1_1 )
#elif defined( LIBRARY1_2 )
typedef bucket_t bucket
#else
#error Please define LIBRARY1_1 or LIBRARY1_2 before including this file
#endif

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读