Retourner au contenu associé (journal : Parlons C, parlons pipe !)
Posté par UnixJunkie le 22 août 2012 à 11:38. En réponse au journal Parlons C, parlons pipe !. Évalué à 1.
Petite implémentation sans compteur, pour le fun:
#include <stdio.h> #include <stdint.h> #include <assert.h> typedef uint64_t fifo_t; #define FIFO_CAPACITY (sizeof(fifo_t)) static inline void fifo_init(fifo_t *f) { *f = 0; } static inline int fifo_is_empty(fifo_t *f) { return ((*f) == 0); } static inline void fifo_push(fifo_t *f, char val) { *f <<= 8; *f |= (0x80 | val); } static inline char fifo_read(fifo_t *f) { char res; while ((*f & (0x80UL << (8 * (FIFO_CAPACITY - 1)))) == 0) *f <<= 8; res = (*f & (0x7fUL << (8 * (FIFO_CAPACITY - 1)))) >> (8 * (FIFO_CAPACITY - 1)); *f <<= 8; return res; } int main(int ac, char **av) { const char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; fifo_t fifo; int i; fifo_init(&fifo); assert(fifo_is_empty(&fifo)); for (i = 0; i < FIFO_CAPACITY; i++) fifo_push(&fifo, alphabet[i]); while (!fifo_is_empty(&fifo)) printf("Read: %c\n", fifo_read(&fifo)); assert(fifo_is_empty(&fifo)); fifo_push(&fifo, 'z'); assert(fifo_read(&fifo) == 'z'); return 0; }
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: compteur ?
Posté par UnixJunkie . En réponse au journal Parlons C, parlons pipe !. Évalué à 1.
Petite implémentation sans compteur, pour le fun: