在C中有可能有一个结构或函数的并集吗?

在C中有可能有一个结构或函数的并集吗?,c,function,struct,unions,C,Function,Struct,Unions,是否有任何方法,无论是联合、结构还是其他方法,都可以拥有一组函数 typedef struct { //ERROR int sqr(int i) { return i * i; } //ERROR int cube (int i) { return i * i * i; } } test; 结构中的字段可以是函数指针: struct Interface { int (*eval)(int i); }; 不

是否有任何方法,无论是联合、结构还是其他方法,都可以拥有一组函数

typedef struct {
    //ERROR
    int sqr(int i) {
        return i * i;
    }
    //ERROR
    int cube (int i) {
        return i * i * i;
    }
} test;

结构中的字段可以是函数指针:

struct Interface {
    int (*eval)(int i);
};
不能在结构体中定义函数,但可以将具有相同签名的函数分配给结构字段:

int my_sqr(int i) {
    return i * i;
}

int my_cube(int i) {
    return i * i * i;
}

struct Interface squarer = { my_sqr };
struct Interface cuber = { my_cube };
然后像调用普通函数一样调用字段:

printf("%d\n", squarer.eval(4));    // "16"
printf("%d\n", cuber.eval(4));      // "64"

可能,但不是这样。在结构中可以有指向函数的指针。不过,联合没有多大意义。@EugeneSh:联合对于联合有意义的其他情况也有意义,有时需要指向一种函数类型的指针,有时需要指向另一种函数类型的指针。例如,一个人可能正在用YACC进行解析,需要在不同的情况下调用或指向不同类型的函数。你为什么想要一组函数?@christiangibons嗯,人们正在收集硬币、邮票和其他奇怪的东西。。为什么不收集函数?:)这并不像在C中尝试这样做那么奇怪:-)