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
    invitef1d0ad93

    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 invited18c255f dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 04/12/2009, 19h35
  2. C: pointeurs, destructions
    Par inviteead871d5 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 invitefe0032b8 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 05/07/2007, 19h11
  4. problème sous matlab avec ode45
    Par invite80950a2d dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/02/2007, 17h35
  5. Recuperer un programation de microC
    Par invite244b0c93 dans le forum Électronique
    Réponses: 4
    Dernier message: 25/03/2006, 09h46
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...