|
|
1
21
使用结构,但不要向客户端公开定义。 即在.h头文件中输入:
在.c实现文件中:
这种方法的优点是:
唯一的缺点是您必须分配一个内存块——但是假设您的库在做一些不重要的事情(如果它在做文件I/O,那肯定是不重要的),单个malloc的开销可以忽略不计。 您可能希望将上述函数重命名为类似于“quuxsork_create”的函数,并添加更多的函数来处理逐行执行的工作以及完成后销毁状态。
像这样工作的库的随机例子是POSIX线程库pthreads。 |
|
2
3
使用结构,但不要告诉客户它是结构。传递一个不透明的指针-void*,或者更好的方法是指向空的伪结构的指针-并在需要时将其强制转换回来。 |
|
|
3
1
大多数库函数处理这种情况的方法是,以用户需要的任何数据类型将状态信息返回给用户。在您的例子中,是一个结构。(以strtok和strtok-r为例)。我相信这是一个先例,你应该把它传给用户。空虚*起作用。你甚至可以用typedef来修饰它,使它看起来漂亮。 此外,strtok_r通过编辑命令行参数来实现这一点,而不是返回指向状态的指针。我希望我使用的任何可重入函数都遵循类似的格式。当然,我的大脑被一些非常疯狂的C代码扭曲了。
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |