Je ne comprends pas pourquoi la déclaration ci-dessous est acceptée: tandis que ce qui suit ne fait pas: p> je suis Utilisation de MSVC6 (je sais que c'est obsolète et non standard, mais il est nécessaire de conserver un système de revenus annuel du dixième million de dollars: /) p> p>
3 Réponses :
Le symbole du pointeur se lie au type par défaut, le pointeur de fonction a donc besoin de la parenthèse pour indiquer que le pointeur est en réalité sur le nom et non sur le type de retour. P>
Sans les parenthèses, vous déclarez une fonction renvoyant un void * code>, pas un pointeur sur une fonction renvoie
vide p>. p>.
Le code ci-dessous est accepté sans girez par GCC 4.2.1 sur MacOS X 10.6.5 avec le compilateur défini sur Fussy: code: p> Le premier donne un pointeur à une fonction renvoie Vous pouvez les utiliser pour déclarer les pointeurs de fonction: p> amusement, n'est-ce pas ... p> p> vide code>; Ces deux derniers sont équivalents (l'espacement ne fait aucune différence) et vous donnent un type qui est «Fonction (prise en charge de LPVoid) qui renvoie le pointeur à vide». P>
Notez que toutes ces déclarations TYPEDEF sont valides. Aucun n'est invalide C ++.