Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2015 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Pointeurs de fontions...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pointeurs de fontions...

n°314210
Profil sup​primé
Posté le 20-02-2003 à 17:22:16  answer
 

Bonjour...
Je cherche à faire une fonction "exec()", dans un système d'exploitation monotache fait maison...
Pour cela, je compte charger le fichier en mémoire, et faire un call vers cette fonction...
J'ai testé ceci, mais le compilo me crache dessus :
 

Code :
  1. void exec(char* name)
  2. {
  3. int x=512;
  4. void* temp;
  5. void* (fonction(void));
  6. int fd;
  7. int i=0, j=0;
  8. fd=open(name);
  9. if (fd==-1)
  10. {
  11.  print("Erreur d'exécution\n" );
  12.  return;
  13. }
  14. temp=(void*)kmalloc(x*sizeof(char));
  15. j=read(fd,512,(void*)temp);
  16. while (j!=0)
  17. {
  18.  i+=j;
  19.  x+=512;
  20.  temp=(void*)krealloc((void*)temp,x);
  21.  i+=(j=read(fd,512,(void*)((int)temp)+x-512));
  22. }
  23. temp=(void*)krealloc((void*)temp,i);
  24. fonction=temp;
  25. fonction();
  26. kfree(temp);
  27. }

 
Le compilo me dit ceci :
 

../kernel/kernel.c: Dans la fonction « exec »:
../kernel/kernel.c:47: invalid lvalue in assignment

 
Qqn peut-t-il m'aider ?
Merci :hello:

mood
Publicité
Posté le 20-02-2003 à 17:22:16  profilanswer
 

n°314216
Taz
bisounours-codeur
Posté le 20-02-2003 à 17:28:18  profilanswer
 

void* (fonction(void));
 :non:  
 
void (*fonction)(void)
 
est un pointeur vers une fonction du type "void foo(void)"
 
edit:
- tous les cast vers ou depuis des void* sont inutiles
- sizeof(char)==1 par définition
 
- i+=(j=read(fd,512,(void*)((int)temp)+x-512))
ultra illisible et chiatique
 
-  temp=(void*)krealloc((void*)temp,i);
fonction=temp;
 
pourquoi passer par temp ?
 
- void exec(const char* name)
est bien mieux
 


Message édité par Taz le 20-02-2003 à 17:32:08
n°314221
Profil sup​primé
Posté le 20-02-2003 à 17:39:32  answer
 

merci pour ttes ces précisions :jap:
et ça a réussi !!! :)
merci bcp !!!
ciao...
:hello:

n°314224
Taz
bisounours-codeur
Posté le 20-02-2003 à 17:41:14  profilanswer
 

Le Sot Zi a écrit :

merci pour ttes ces précisions :jap:
et ça a réussi !!! :)
merci bcp !!!
ciao...
:hello:

putain j'avais meme pas fait gaffe que c'etais toi! ton projet avance?

n°314286
Profil sup​primé
Posté le 20-02-2003 à 19:01:53  answer
 

++Taz a écrit :

putain j'avais meme pas fait gaffe que c'etais toi! ton projet avance?

oui, comme tu le vois, je suis en train d'exécuter des fonctions externes. Dans 15 jours, j'aurais un mini DOS, si j'arrive à la fin du projet, bien entendu... Je v devoir passer quelques nuits blanches, et je manque vraiement de main d'oeuvre... Le pb, c ke ds 15 jours je dois le présenter en amphi, alors ça va être chaud :'(

n°314289
Taz
bisounours-codeur
Posté le 20-02-2003 à 19:03:07  profilanswer
 

bon courage

n°314300
Profil sup​primé
Posté le 20-02-2003 à 19:07:30  answer
 

++Taz a écrit :

bon courage

merci  :cry:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Pointeurs de fontions...

 

Sujets relatifs
[c++]pointeurs[C]Un ptit coup de main sur pointeurs et fonction svp
J'ai bcp de mal avec les pointeurs, un peu d'aide svp ...[C++] pointeurs "intelligents" (désolé, c'est leur nom)
Pbs avec pointeurs ! [RESOLU ]double pointeurs et tableaux?
Pointeurs sur fonctions (question pointue !)petite question sur les pointeurs
demande de validation d'une fonction en c avec des pointeurs[C] Petite question sur les pointeurs deux étoiles qui se suivent
Plus de sujets relatifs à : Pointeurs de fontions...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR