Buonasera, avrei gentilmente bisogno di un vostro aiuto.
Sbirciando dei codici c++ trovati su internet per imparare, mi sono imbattuto in alcuni problemi. Ve li espongo:
1. Qual'è la differenza tra "inline" e "#define"?
Questo è un esempio in cui la medesima funzione restituisce valori diversi a seconda se essa è definita con inline o con #define:
codice:#define SQUARE(x) ((x)*(x)) int a = 2; int b = SQUARE(a++); // Alla fine risulta a = 4, b = 2*3 = 6Perché i due codici si comportano in maniera differente? Cosa succede precisamente? Ho sentito che inline serve per ridurre il tempo di overhead... è quindi consigliabile usare SEMPRE inline al posto di define oppure di non utilizzare niente?codice:inline int SQUARE(int x) { return x*x; } int a = 2; int b = SQUARE(a++); // Alla fine risulta a = 2, b = 2*2 = 4
2. Ho trovato il seguente codice:
Quello che mi chiedo è: assertd è una funzione standard del C/C++ che voi sappiate? NULL è una costante predefinita in C++? Si può scrivere NULL in minuscolo? Cosa significa (exp)((void)NULL)?codice:#ifndef NO_ASSERTD #undef assertd #define assertd(exp) ((void)NULL) #endif ... inline char GetAt(int pos) const { assertd(pos<Len); return pData[pos]; }

Rispondi quotando