[Lugge] Re: Quesito biricchino di programmazione in C (birrain palio)

  • From: "Roberto A. Foglietta" <me@xxxxxxxxxxxxxxxxxxxxxx>
  • To: lugge@xxxxxxxxxxxxx
  • Date: Wed, 09 Jun 2004 17:33:47 +0200

asettico ha scritto:

Roberto A. Foglietta wrote:

Roberto A. Foglietta ha scritto:

Fine del gioco e doppia figura di merda per me:


Viva la sincerità! ;-) Secondo me, proprio te meriti la birra in premio, se non altro per aver ammesso la tua non paternità... O:-)


No, sulla paternità non ho dubbi ho sviluppato quella soluzione in maniera indipendente. Purtroppo è piuttosto difficile dimostrarlo quando la soluzione è (mi hanno detto ma non ho verificato) persino presente nel K&R. Il fatto è che ho imparato a programmare in C quando avevo 13 anni e non ho mai aperto un libro sul C, sul C++ sì ma sul C in se per se mai.


Il problema me lo posi quando ancora lavoravo a Genova e lo risolsi il giorno dopo. La mattina mi svegliai ed andando al lavoro, fermo ad un semaforo, ebbi l'illuminazione. Non ho mai pensato che una cosa simile davvero fosse diffusa... pensavo che fosse una mia personalissima sega mentale.

Oggi ne ho avuto di nuovo bisogno e così ho pensato di fare un po' di show... sono stato superficiale, avrei dovuto controllare... almeno su google!


 - mi hanno detto che la soluzione do { ... } while(0) è usata spesso
   nel kernel


Interessante, ma implica l'inizializzazione di un ciclo e la valutazione di una condizione. A questo punto, starà alla bontà del compilatore accorgersi che la condizione è sempre falsa ed il ciclo può non essere inizializzato.

??? eventualmente con -03 il compilatore non inizia nessun ciclo ma il codice viene compilato correttamente cioè, ignornado il ciclo ma mantenendo le parentesi graffe. Che poi era lo scopo del trucchetto!




Anche in questo mare di TB, governato da correnti di GHz, qualche ciclo risparmiato a volte può essere comodo... (belan, come sono poetico... ROTFL :-D ), specialmente in un kernel.
Ma può anche essere che il tutto sia annegato nella solita define di debug.



Non credo che si faccia un uso così intensivo di questa cosa, e comunque l'apertura di un ciclo di while richiede molti meno cicli di clock che non il passaggio ad una funzione con tutto quello che comporta!


 Ciao,
--
Roberto A. Foglietta
http://roberto.foglietta.name
http://lugge.net
ICQ#: 108718257
========----------

Prima di scrivere in m-list per favore leggi il regolamento
http://www.lugge.net/soci/index.php?link=manifesto

Archivio delle e-mail postate in lista
http://www.freelists.org/archives/lugge/

Modifica dell'account sulla lista LUGGe
http://www.lugge.net/soci/index.php?link=manifesto.htm#list


Other related posts: