Pourquoi ne puis-je appeler une fonction par l'intermédiaire d'un pointeur avec trop d'arguments?

Dire que j'ai cette fonction:

int func2() {
    printf("func2\n");
    return 0;
}

Maintenant je déclare un pointeur:

int (*fp)(double);

Ce doit pointer vers une fonction qui prend un double argument et renvoie un int.

func2 n'a aucun argument, mais encore quand j'écris:

fp = func2;
fp(2);

(avec 2 être juste un nombre arbitraire), func2 " est invoquée correctement.

Pourquoi est-ce? N'est-il pas un sens à la nombre de paramètres, je déclare un pointeur de fonction?

  • La réponse courte est "la déclaration d'une fonction sans arguments... et puis, délibérément, en passant un argument... est tout simplement faux".
InformationsquelleAutor yotamoo | 2011-08-21