我目前正在制作一个可以访问 random.org 并获取随机字符串或整数的小型库。不过,在设计方面,我现在遇到了一个小问题,我无法决定我的两种方法中哪一种是最好的,所以我会写下我对这两种方法的想法,并提出我认为与这两种方法相关的问题.
我目前有一个这样的结构:
typedef struct {
char **array;
size_t row;
size_t col;
size_t size;
} MemoryStruct;
这是我的“问题”的根源,因为我现在已将整数处理添加到我的库中。
可以看出,该指针当前是一个 char 指针,并且由于我希望能够处理印迹整数和字符,我应该添加另一个指针 - 一个整数指针 - 还是应该将它改为一个 void 指针并制作一个将返回正确类型的指针的函数?
添加一个整数指针将是最简单的,但我不确定对于将来可能会使用我的库的人来说这看起来有多明显,这就是他的程序段错误的原因,因为他使用了错误的结构中的指针。
但是,添加一个 void 指针意味着我将不得不做一个基于上下文的函数,该函数将返回一个正确类型的指针(如果这甚至可能 - 老实说我不知道它是否是),这导致问题:
可以返回不同类型指针的函数具有哪种返回类型?(......很明显,一个 void 指针!)但是我仍然没有包含想要的类型,以便使用我的库的程序员轻松使用 - 这是我想做的伪代码.
pointer-with-type-info *fun(MemoryStruct *memory, RandomSession *session)
switch case on session->type
return pointer of appropriate type
应该在这里添加,从 session->type 可以推断出指针应该是哪种类型。
预先感谢您阅读本文。