Is there a way to detect code that declares a function, and then uses the preprocessor to define calls to it as empty? i.e. code that does:
extern int _IO_ftrylockfile (_IO_FILE *);
# define _IO_ftrylockfile(_fp) /**/
I've had a rather confusing debugging session where I thought maybe seeing different prototypes due to preprocessor directives. Compiling my generated code was giving me the (not entirely helpful) error message:
dummy.cc.cc:2641:3: error: non-void function '__ffi$580' should return a value [-Wreturn-type]
When I grep'd the preprocessor output for the prototype it was shown correctly, but it was only when I searched for the call site that I saw what was really going on.