Peut un prototype de fonction typedef être utilisé dans la définition d'une fonction?

J'ai une série de fonctions avec le même prototype, dire

int func1(int a, int b) {
  //...
}
int func2(int a, int b) {
  //...
}
//...

Maintenant, je veux leur simplifier la définition et de la déclaration. Bien sûr, je pourrais utiliser une macro comme ça:

#define SP_FUNC(name) int name(int a, int b)

Mais je tiens à le garder en C, j'ai donc essayé d'utiliser l'espace de stockage spécificateur de typedef pour cela:

typedef int SpFunc(int a, int b);

Cela semble bien fonctionner pour la déclaration:

SpFunc func1; //compiles

mais pas pour la définition:

SpFunc func1 {
  //...
}

qui me donne l'erreur suivante:

error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token

Est-il un moyen de le faire correctement ou est-ce impossible?
Ma compréhension de C cela devrait fonctionner, mais il ne le fait pas. Pourquoi?


Note, gcc comprend ce que je suis en train de faire, parce que, si j'écris

SpFunc func1 = { /* ... */ }

il me dit

error: function 'func1' is initialized like a variable

Ce qui signifie que gcc comprend que SpFunc est un type de fonction.

InformationsquelleAutor bitmask | 2011-01-01