gpt4 book ai didi

c - 在 C 中实现函数重载的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:08 25 4
gpt4 key购买 nike

我目前正在编写一个头文件 data_structures.h,其中包含几种不同的数据结构,例如动态数组和树。我的问题是,我想要一个像 get_element() 这样的函数,它可以用动态数组或树或任何其他数据结构的实例调用。

我知道 C 中没有函数重载这样的东西,但是有什么最佳实践方法可以解决这个问题吗?是否最好为每个数据结构使用另一个函数名称,例如 tree_get_element()

int get_element(struct dynarray *a, int index);
int get_element(struct tree *t, int index);

最佳答案

Would it be best to just have another function name for each data structure, for example tree_get_element()?

是的,这是在 C 中通常完成的方式。

但如果您使用的是 C11 编译器,则可以使用泛型表达式对其进行扩展:

int dynarray_get_element(struct dynarray *a, int index);
int tree_get_element(struct tree *t, int index);

#define get_element(x, index) \
_Generic((x), \
struct dynarray *: dynarray_get_element,\
struct tree * : tree_get_element \
)((x), (index))

关于c - 在 C 中实现函数重载的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644711/

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