Je suis en train de rencontrer un problème ici, je suis en train de déconner avec du code machine et des pointeurs de fonction, et il y a un peu de code que VC++ refuse compiler.Je ne trouve pas mon erreur de syntaxe, VC++ dit qu'il y en a un
Cette compile et fonctionne exactement comme prévu:
#include <stdlib.h>
#include <stdio.h>
int main()
{
char tarr[] = {0xb8, 222, 0, 0, 0, 0xc3};
int (*testfn)() = tarr;
printf("%d", testfn()); // prints 222
getchar();
}
Toutefois, Visual C++ express ne compiler ce qui suit, donnant cette erreur: error C2143: syntax error : missing ';' before 'type'
#include <stdlib.h>
#include <stdio.h>
int main()
{
char* tarr = (char*) malloc(1000);
tarr[0] = 0xb8;
tarr[1] = 222;
tarr[2] = 0;
tarr[3] = 0;
tarr[4] = 0;
tarr[5] = 0xc3;
int (*testfn)() = tarr; // syntax error here
printf("%d", testfn());
getchar();
}
Je l'ai regardé le code prétendument défectueux et je ne vois rien de mal à cela. Que se passe-t-il? Y a-t-il quelque chose qui me manque?
avec Visual Studio 2008 la première version ne compile pas: erreur C2440: 'initialisation': ne peut pas convertir de 'char [6]' en 'int (__cdecl *) (void)' – sergiom
@sergiom C'est étrange - le premier extrait compile bien pour moi dans VC++ 2008 Express –