gpt4 book ai didi

c++ 与旧库的兼容性

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:09 26 4
gpt4 key购买 nike

我有一个库 1-1.h。

#include <1-1.h>;

它有一个结构:

struct bucket { ... }

不幸的是,这个库是 3 方的,他们在 1.2 中将结构桶更改为 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

关于c++ 与旧库的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17284809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com