• [^] # Re: compteur ?

    Posté par . En réponse au journal Parlons C, parlons pipe !. Évalué à 2. Dernière modification le 22 août 2012 à 16:51.

    Tes char tiennent sur 7bits, les originaux sur 8bits sinon c'est amusant comme idée: maximiser la performance du push, au détriment d'avoir un pop/read lent.
    Autre méthode avec le même stockage qu'à l'origine:

    static inline char fifo_read(fifo_t *f) {
     char res;
     int8 cnt = 0;
     fifo_t copie = *f;
     do {
     res = copie & 0x7f; /*on peut calculer res après aussi */
     copie >>= 8;
     cnt++;
     } while (copie != 0);
     *f &= ~((1 << 8*cnt)-1);
     return res;
    }
    
    

    Après il y a des fonctions qui donne le numéro du bit de poids fort qui peuvent être plus performante mais moins portable.