#include #define logmsg1 void(*) #define logmsg2 while(0) #define logmsg3 inline void logmsg4(...) { } #define logmsg5 (void(*)) #define logmsg6 (void(*)(...)) #define logmsg7 (void*) #define logmsg8 (void) #define logmsg9 (void(*)()) struct tstobj { tstobj(int n) { printf("tst%d created\n", n); } ~tstobj() { printf("tst destroyed\n"); } int ival() { return 123; } }; int main(int,char**) { #ifndef _MSC_VER logmsg1("test", tstobj(1).ival()); #endif logmsg2("test", tstobj(2).ival()); logmsg3("test", tstobj(3).ival()); logmsg4("test", tstobj(4).ival()); // no comma warning logmsg5("test", tstobj(5).ival()); logmsg6("test", tstobj(6).ival()); logmsg7("test", tstobj(7).ival()); logmsg8("test", tstobj(8).ival()); logmsg9("test", tstobj(9).ival()); return 0; }