C函数的未知返回类型

1 c function return-type

我正在为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)

Pau*_*l R 7

这听起来真的很糟糕,但如果你觉得你必须出于某种原因这样做,那么你可以使用一个联合来返回不同的类型.

  • 对于糟糕的设计+1,或者至少是dangeresque. (2认同)

bta*_*bta 7

如果一个函数可以返回多个类型,我不建议使用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字段).