大佬教程收集整理的这篇文章主要介绍了哪种方式更适合在C中创建类型无关的结构?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
方法1:使用预处理器.像这样:
#define DEFINE_PAIR(T) typedef struct Pair_##T{ \ T x; \ T y; \ } Pair_##T DEFINE_PAIR(int); int main(){ Pair_int p; return 0; }
一个明显的缺点是你必须在使用类型之前调用宏.可能还有更多的缺点,我希望你能指出.
typedef struct Pair{ void* x; void* y; } Pair;
显然,这种方法不是类型安全的(我可以轻松地将一对字符串传递给期望一对双精度的函数),而且使用这种方法进行重新分配的代码变得更加混乱.
我想听听你对此的看法.这两种方法中哪一种更好/更差?为什么?有没有其他方法可以用来在C中编写通用结构?
谢谢.
complex_structure_type *object = complex_structure_type_init(); complex_structure_type_set_title(object,"whatever"); complex_structure_type_free(object);
那么你必须
typedef complex_structure_type *complex_structure_type_ptr;
为了
DEFINE_PAIR(complex_structure_type_ptr);
所以你可以
Pair_complex_structure_type_ptr p;
然后
p.x = object;
但这只是一点点工作,所以如果你觉得它适合你,那就去吧.您甚至可以将自己的预处理器放在一起,通过代码,拉出任何类似Pair_whatever的东西,然后为C预处理器添加DEFINE_PAIR(无论如何).无论如何,这绝对是你在这里展示的一个巧妙的想法.
就个人而言,我只会使用无效指针而忘记强类型安全性. C只是没有与其他语言相同的类型安全机制,你忘记某些东西的机会越多,你就会意外地创造出越多的错误.
祝好运!
以上是大佬教程为你收集整理的哪种方式更适合在C中创建类型无关的结构?全部内容,希望文章能够帮你解决哪种方式更适合在C中创建类型无关的结构?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。