stavo leggendo __noop e l'esempio MSDN èPerché e quando usare __noop?
#if DEBUG
#define PRINT printf_s
#else
#define PRINT __noop
#endif
int main() {
PRINT("\nhello\n");
}
e non vedo il guadagno sopra solo avere una macro vuota:
#define PRINT
Il codice generato è lo stesso. Qual è un esempio valido dell'uso di __noop
che lo rende effettivamente utile?
Immagino che ci siano situazioni in cui "nessuna affermazione" altera il funzionamento delle cose. Non sono del tutto sicuro di poterne pensare uno adesso '. –
Btw, il loro esempio è un po 'dubbia in quanto risulta in un'espressione con un tipo diverso in modalità debug e release. Ma non è così rischioso come il tipo in modalità di debug, indipendentemente dagli "argomenti" su "PRINT"! I macro Variadic consentono una definizione migliore di #define PRINT (...) ((void) printf_s (__ VA_ARGS __)) 'e' #define PRINT (...) ((void) 0) ', e questo ti impedisce anche cercando di prendere un puntatore a funzione con '& PRINT'. –