我正在为C编写一个库,一个函数可以返回一个字符串(char *),一个整数或一个double.接下来,字符串的长度是未知的.我真的不知道如何处理这个问题.我想过使用指针作为函数的参数,但这确实很混乱.
任何人都可以给我一个解决方案,也许一些简短的示例代码?谢谢.
void指针作为返回类型,以及指向返回值大小的指针作为参数:
void* func(int x, int y, int *size) { ... }
/* or */
void* func(int x, int y, int &size) { ... }
/* always confused about them ): */
Run Code Online (Sandbox Code Playgroud)
?
如果一个函数可以返回多个类型,我不建议使用union(至少不是一个).您的函数需要返回两条信息:结果和结果类型.使用像这样的结构可能会获得最大的收益:
enum return_val_type {STRING, INT, DOUBLE};
struct return_val {
enum return_val_type return_type;
union {
char* s;
int i;
double d;
};
};
Run Code Online (Sandbox Code Playgroud)
这样,调用者可以检查它们的值return_type并确定它们如何解释数据(即,使用哪个union字段).