C中的枚举指针参数

时间:2011-11-23 17:58:55

标签: c pointers enums

我正在为项目编写一些测试函数。测试函数接受函数指针,期望值和测试值并检查它们:

int TestIntInIntOut(int (*func)(int val), int expected, int testvalue);

但是,我也在测试可以将枚举作为参数或退出值的函数。

假设以下内容:

typedef enum { Zero, One, Two } MyEnum;

有没有办法可以将整个枚举作为一种类型传递?对于任何枚举。例如:

int TestIntInEnumOut(?enum? (*func)(int val), ?enum? expected, int testvalue);

int TestEnumInIntOut(int (*func)(?enum? val), int expected, ?enum? testvalue);

(类似于C#中允许的泛型。)

2 个答案:

答案 0 :(得分:4)

你的意思是任何枚举,还是MyEnum

如果您只需要支持MyEnum的功能,则可以执行以下操作:

int TestEnumInIntOut(int (*func)(MyEnum val), int expected, MyEnum testvalue);

否则你可能无法在C中做到这一点,类型安全性很高。但是枚举与int基本相同,因此您可以将它们全部视为int类型。如果需要类型安全性,请考虑为不同的枚举类型提供不同的整数值范围。

答案 1 :(得分:0)

不能直接回答您的问题,但正如您所说的那样,您正在编写一些测试功能:您可能希望查看googletestcppunit - 可以省去一些麻烦。