3 ms·
Yes (the macro must be define as #define getc(stream) ... of course, but that's the only legal definition anyway). ("Free-standing implementations" like
by JoachimSchipper 16y ago
Yes (the macro must be define as
#define getc(stream) ...
of course, but that's the only legal definition anyway).
("Free-standing implementations" like kernels have a lot of freedom to muck with the standard library. But that's not really relevant.)
- nuxi 16y agoAh okay, I understand what you meant now. One thing however - if it is a macro, couldn't it just be: #define getc fgetc_or_similar At least C89/90 only mentions that if it is a macro, it may evaluate arguments more than once (but then it may not, as in the above case).
- JoachimSchipper 16y agoYes and no. Yes, that is a valid #define; but the following program must work: #include <stdio.h> #undef getc int main(void) { getc(stdin); return 0; } so it cannot be implemented as only a macro.