Salve a tutti, mi sapreste dire che differenza c'è tra le funzioni fgetc()/getc(), fputc()/putc()... ?
Salve a tutti, mi sapreste dire che differenza c'è tra le funzioni fgetc()/getc(), fputc()/putc()... ?
Basta leggere la documentazione
"fgetc and getc are equivalent, except that the latter one may be implemented as a macro."
e anche
"getc is equivalent to fgetc and also expects a stream as parameter, but getc may be implemented as a macro, so the argument passed to it should not be an expression with potential side effects."
No MP tecnici (non rispondo nemmeno!), usa il forum.
Cosa si intende per " ...be implemented as a macro" ?Originariamente inviato da oregon
Basta leggere la documentazione
"fgetc and getc are equivalent, except that the latter one may be implemented as a macro."
e anche
"getc is equivalent to fgetc and also expects a stream as parameter, but getc may be implemented as a macro, so the argument passed to it should not be an expression with potential side effects."
Vuol dire esattamente quello che c'è scritto: getc potrebbe essere implementata come una macro, per cui può essere che nell'espanderla l'argomento dello stream passato possa essere valutato più volte. In ogni caso era un'ottimizzazione che aveva senso 20 anni fa, attualmente non credo che nessuno (sui compilatori "mainstream") implementi più getc come macro, il compilatore dovrebbe essere abbastanza furbo da effettuare l'inlining per i fatti suoi se necessario.
Amaro C++, il gusto pieno dell'undefined behavior.
La risposta a questa domanda la trovi rapidamente leggendo la documentazione oppure facendo una semplice ricerca su Google.Originariamente inviato da Ghemon-a
Salve a tutti, mi sapreste dire che differenza c'è tra le funzioni fgetc()/getc(), fputc()/putc()... ?
Non è necessario aprire una discussione nel forum per questo tipo di quesiti la cui risposta è pubblicamente e immediatamente disponibile.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...