2010-11-26 5 views
3
typedef int F1(int x); 

int F1(int x); 

Semble la même chose pour moi, que ce soit avec typedef ou non ..Quelle est la différence entre ces 2 déclarations en c?

+0

Dans ce cas, il est le même que même si vous ne mentionnez pas le type de retour, le type de retour par défaut est int.Mais ce sera différent si vous utilisez un type de données différent. http: //www.geekintervi ew.com/question_details/31059 –

Répondre

6

typedef ne déclare pas de variable; il déclare un type.

Après avoir dit:

typedef int F1(int x); 

plus tard dans votre code, vous pouvez avoir ceci:

F1 myfunction; 

qui équivaut à:

int myfunction(int x); 
+0

Donc, je ne peux pas utiliser 'F1 myfunction' si je n'utilise pas' typedef'? – wp2

+0

@ wp2 - exactement. Reportez-vous à http://msdn.microsoft.com/en-us/library/05w82thz(VS.71).aspx – BeemerGuy

6
typedef int F1(int x); 

Vous définissez un type F1 fonction qui est fonction qui prend un entier comme argument et retournant un entier

int F1(int x); 

Vous définissez une fonction qui est appelée F1

+2

La différence est plus claire lors de l'écriture: "typedef int (* F1) (int x);" – eyalm

+1

@eylam - Les deux ne sont pas équivalents. Le vôtre déclare un type de pointeur de fonction. L'original déclare un type de fonction. –

+1

typedef int F1 (int x) n'est certainement pas un pointeur de fonction. –

Questions connexes