------- Comment #7 from pinskia at gcc dot gnu dot org 2008-02-09 00:21 ------- (In reply to comment #5) > The code is not "buggy". printf and fprintf are not reserved words, and > occupy a separate namespace with regard to the structure name and any > global function names.
No they can be function macros if you include stdio.h, please read the standard. >From C99 (7.1.4/1): Any function declared in a header may be additionally implemented as a function-likemacro defined in the header, so if a library function is declared explicitly when its header is included, one of the techniques shown belowcan be used to ensure the declaration is not affected by such a macro. So you can do: p.(fprintf)(&p, "%i", 123); or #undef fprintf after including stdio.h. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34710