J'ai mis en place un tampon circulaire, et j'aimerais un moyen concis de mettre à jour le pointeur de la mémoire tampon tout en gérant correctement le wrap-around.Suggestions pour la gestion d'index concise dans le tampon circulaire
En supposant un tableau de taille 10, ma première réaction a été quelque chose comme:
size_t ptr = 0;
// do some work...
p = ++p % 10;
Analyse statique, ainsi que gcc -Wall -Wextra, à juste titre giflé mon poignet pour un comportement non spécifié en raison d'une séquence violation de point. La solution évidente est quelque chose comme:
p++;
p %= 10;
Cependant, je cherchais quelque chose de plus concis, (à savoir, une seule ligne) à « encapsuler » cette opération. Suggestions? Autre que p ++; p% = 10; :-)
+1 presque ... si ce n'était pas pour l'horrible '(9 == p)' LOL – pmg
Heh, "p = (p + 1)% N" c'est. – Throwback1986