如何在函数指针的typedef中返回枚举?

时间:2010-10-28 06:20:02

标签: c enums function-pointers

#include <stdio.h>

enum bool
{
  true, false
};

typedef bool
(*compare_fun) (int, int);

输入上述代码时出错。如何创建一个需要返回布尔值的函数指针?

2 个答案:

答案 0 :(得分:3)

应为typedef enum bool (*compare_fun)(int, int);:)

另请确保您的实施没有预定义的bool truefalse

请注意,在C ++中定义枚举,类或结构时,例如名称为A,则可以声明类型A的变量,如

A var;

class A var; //or struct A var; or enum A var;

在C中,只有第二种语法有效。 这就是他们通常制作typedef的原因。像这样

typedef enum {true, false} bool;

在这种情况下,您可以使用原始语法:

typedef bool (*p) (int, int);

HTH。

答案 1 :(得分:1)

怎么样:

typedef enum 
{
    true, false
} bool;

bool
(*compare_fun) (int, int);