View Full Version : [C++]Define strano
Kleidemos
02-09-2003, 11:25
/* Caches aren't brain-dead on the intel. */
#define flush_cache_all() do { } while (0)
#define flush_cache_mm(mm) do { } while (0)
#define flush_cache_range(vma, start, end) do { } while (0)
#define flush_cache_page(vma, vmaddr) do { } while (0)
#define flush_dcache_page(page) do { } while (0)
#define flush_icache_range(start, end) do { } while (0)
#define flush_icache_page(vma,pg) do { } while (0)
#define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
Come funziano questi define ????
Fonte: kernel 2.6-test4
ilsensine
02-09-2003, 11:29
Sono no-op, non definiscono nulla. Probabilmente sono inclusi in un blocco
#ifdef qualcosa
#define flush_cache_all() do { } while (0)
#else
extern void flush_cache_all();
#endif
Il ciclio do { } while (0) serve solo a poter usare la stessa punteggiatura come se la macro fosse una funzione.
Kleidemos
02-09-2003, 11:31
ho capito costruendomi un esempio:
#include <iostream>
#include <cstdio>
#include <cstring>
#define flush( NOME ) do { cout << NOME; } while ( strcmp(NOME, "$") != true )
using namespace std;
int main()
{
flush( "A$\n" );
system( "PAUSE ");
return 0;
}
Tnk cmq
e una faq di kernelnewbies
http://www.kernelnewbies.org/faq/index.php3#dowhile
Kleidemos tu comunque mi sa che confondi il C con il C++ e sebbene a volte non rilevante, questa è una gravità atroce.
Ti riferisci a questo ?
strcmp(NOME, "$") != true
Kleidemos
02-09-2003, 21:03
Originariamente inviato da mjordan
Kleidemos tu comunque mi sa che confondi il C con il C++ e sebbene a volte non rilevante, questa è una gravità atroce.
e perche?
Le funz del c nn possono essere usate in C++??
Originariamente inviato da Kleidemos
e perche?
Le funz del c nn possono essere usate in C++??
Certo.
Ma C != C++ => C++ = C + 1
Kleidemos
03-09-2003, 14:47
Ma l'importante nn come fai qulacosa(in linea di massima) ma il farlo
Originariamente inviato da Kleidemos
Ma l'importante nn come fai qulacosa(in linea di massima) ma il farlo
Su questo non sono d'accordo...bisogna avere stile nel programmare... Se non c'è stile ci limitiamo solamente a "scrivere codice" ;):sofico:
Kleidemos
03-09-2003, 15:04
Originariamente inviato da cionci
Su questo non sono d'accordo...bisogna avere stile nel programmare... Se non c'è stile ci limitiamo solamente a "scrivere codice" ;):sofico:
ma in fondo il codice sono 1 e 0 che vengono inviati da e alla CPU............... il risultato e sempre uguale!
Se poi il codice deve essere elegante, ok...........ma prima deve funziare:D
Un codice elegante molte volte può funzionare meglio di uno non elegante ;) :D
Kleidemos
03-09-2003, 15:31
Originariamente inviato da cionci
Un codice elegante molte volte può funzionare meglio di uno non elegante ;) :D
esempio?
:D
Scrivere un esempio di punto in bianco non si può...bisogna confrontarlo con un altro codice...
Originariamente inviato da Kleidemos
esempio?
:D
Esempio:
List * node = NULL;
if (node != NULL) {
....
}
è molto + inefficiente che scrivere:
List * node = NULL;
if (node) {
....
}
Questo perchè nel primo esempio il compilatore tratta le espressioni in maniera diversa a seconda del tipo di espressione. E la seconda forma risulta + concisa e + facilmente ottimizzabile dal compilatore.
Secondo esempio:
int i;
for (i = 0; i < 10; i++) {
....
}
è molto meno efficiente che scrivere:
for (register int i = 0; i < 10; i++) {
...
}
per due motivi. Si mantiene una variabile che è locale ad un ciclo. Si dichiara una variabile register molto + ottimizzabile dal compilatore. E' comunque una richiesta che non potrebbe essere soddisfatta dal compilatore.
Potrei continuare per ore ...
Kleidemos
03-09-2003, 15:56
Continua qualche minuto che è very interesting
Originariamente inviato da Kleidemos
Continua qualche minuto che è very interesting
Per te è very interesting, per me è very boring :p
Sempre nell'esempio del for, addirittura c'è chi dice che fare
++i
sia più efficiente che fare
i++
cosa che non ho ami verificato....
Io ormai ho preso l'abitudine di fare ++i ed ormai lo faccio sempre...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.