C : Problème avec des pointeurs sous MicroC/OS II
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

C : Problème avec des pointeurs sous MicroC/OS II



  1. #1
    Blub

    C : Problème avec des pointeurs sous MicroC/OS II


    ------

    Bonjour!

    J'utilise une fonction qui, sous MicroC/OS II, vide une file et renvoie un pointeur de type void vers l'élément qui vient de sortir. Je veux récupérer le contenu de l'élément qui est extrait de la file. Voici mon code :

    Code:
    ----
    
        void *pointer = (void *) SDRAM_BASE;
    
        for( j=0 ; j<MSG_QUEUE_SIZE ; j++){
           (*(void*) pointer) = (* (void*)OSQPend(msgqueue,0,&return_code) );
           pointer++;
           alt_ucosii_check_return_code(return_code);
           number_of_messages_received++;
        }
    
    ----
    J'ai droit à un double warning et une erreur :

    Code:
    ----
    
    ../hello_ucosii.c:112: warning: dereferencing `void *' pointer
    ../hello_ucosii.c:112: warning: dereferencing `void *' pointer
    ../hello_ucosii.c:112: error: invalid use of void expression
    
    ----
    (si je supprime les castings void devant les deux pointeurs, le résultat est identique)

    Savez-vous comment je pourrais récupérer le contenu du pointeur donné par la fonction OSQPend et l'entrer dans le pointeur "pointer"?

    Merci beaucoup!

    -----
    Dernière modification par yoda1234 ; 01/11/2008 à 18h10.

  2. #2
    Towl

    Re : C : Problème avec des pointeurs sous MicroC/OS II

    Code:
    (*(void*) pointer) = (* (void*)OSQPend(msgqueue,0,&ret urn_code) );
    Erk, c'est moche, et ca doit pas bien marcher, surtout que les cast à gauche, c'est pas toujours supporté par les compilateur, donc a eviter.

    Essaye de faire
    Code:
    void *pointer = (void *) SDRAM_BASE;
    for( j=0 ; j<MSG_QUEUE_SIZE ; j++)
    {
        SDRAM_BASE my_data;
        pointer = (void*)OSQPend(msgqueue,0,&ret urn_code);
        my_data = (SDRAM_BASE)*pointer;
        my_data++;
        alt_ucosii_check_return_code(r eturn_code);
        number_of_messages_received++;
    }
    Apres, je n'ai fait que réecrire plus proprement cette ligne. Il y a peut etre des erreurs de types, mais deja ca devrait gueuler un peu moins, ou pour autre chose
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

Discussions similaires

  1. problème avec le clic droit sous xp
    Par Mac Y@vel dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 04/12/2009, 19h35
  2. C: pointeurs, destructions
    Par roms42 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 15/08/2008, 10h54
  3. probléme avec Dev c++ sous vista
    Par H0bb3s dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 05/07/2007, 19h11
  4. problème sous matlab avec ode45
    Par vlastinich dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/02/2007, 17h35
  5. Recuperer un programation de microC
    Par dj hasttre dans le forum Électronique
    Réponses: 4
    Dernier message: 25/03/2006, 09h46
Découvrez nos comparatifs produits sur l'informatique et les technologies.