Je tente d'exécuter Dhrystone afin de référencer un PIC32.Exécution de Dhrystone dans C, malloc() types conflictuels
Le code source que je l'utilise vieux, et en particulier il y a une question qui empêche de la construction:
extern char *malloc();
....
....
Next_Ptr_Glob = (Rec_Pointer)
malloc (sizeof (Rec_Type));
Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
Ptr_Glob->Ptr_Comp = Next_Ptr_Glob;
Ptr_Glob->Discr = Ident_1;
Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
Ptr_Glob->variant.var_1.Int_Comp = 40;
strcpy (Ptr_Glob->variant.var_1.Str_Comp,
"DHRYSTONE PROGRAM, SOME STRING");
strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
//rest of program
La déclaration de malloc (de *) génère le message du compilateur: erreur: types contradictoires pour 'malloc'. Quand je commente cette ligne, je peux exécuter le programme mais je pense qu'il y a une erreur d'exécution à Ptr_Glob-> Ptr_Comp = Next_Ptr_Glob; ... J'ai utilisé des LED pour déboguer les erreurs d'exécution et ils fonctionneront jusqu'à ce point. Des idées sur les raisons pour lesquelles je rencontre ces problèmes? Comment puis-je résoudre le problème avec malloc()?
Re malloc - remplacer cette ligne par "#include". Mais puisque le code (http://homepages.cwi.nl/~steven/dry.c?) Est vieux et joue toutes sortes de trucs stupides, deux questions: d'abord, est-ce qu'il fonctionne sur votre ordinateur? (il devrait), et deuxièmement, vous * l'exécutez via "sh dry.c", n'est-ce pas? –
loreb
Le PIC32 n'est pas si vieux pour justifier un tel code! Sans parler du fait que l'utilisation de 'malloc' sur un tel microcontrôleur est un signal d'une conception imparfaite, déjà vieille de quelques centaines d'années lorsque le PIC32 a démarré, ce qui nécessitait des prototypes appropriés. On dirait plutôt que le programmeur a fait un mauvais travail. – Olaf