Как вернуть перечисление в typedef указателя на функцию? - PullRequest
2 голосов
/ 28 октября 2010
#include <stdio.h>

enum bool
{
  true, false
};

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

Я получаю сообщение об ошибке при вводе вышеуказанного кода. Как сделать указатель на функцию, которая должна возвращать логическое значение?

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

должно быть typedef enum bool (*compare_fun)(int, int);:)

Также убедитесь, что ваша реализация не имеет предопределенных bool true и false

Обратите внимание, что в 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);

НТН.

1 голос
/ 28 октября 2010

А как же:

typedef enum 
{
    true, false
} bool;

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