Hi Eljay, what comes out is this: typedef void ASY_TESTPROC_T ((OIDC_T lastmatch, int compc, OIDC_T *compl, ...)); The only difference from the original code that I notice is the __ has been removed. I should mention that OIDC_T is a typedef not a macro. I'm checking as I type, if I change it to unsigned long directly if that makes a difference. nope...no differnece replaing OIDC_T directly with unsigned int What is funny is the group of functions declared similar to it come out differently in the preprocessor: ***************************************************************************** typedef void ASY_TESTPROC_T __((OIDC_T lastmatch, int compc, OIDC_T *compl, ...)); typedef void ASY_GETPROC_T __((OIDC_T lastmatch, int compc, OIDC_T *compl, ...)); typedef void ASY_SETPROC_T __((OIDC_T lastmatch, int compc, OIDC_T *compl, ...)); typedef void ASY_NEXTPROC_T __((OIDC_T lastmatch, int compc, OIDC_T *compl, ...)); ***************************************************************************** comes out as ***************************************************************************** typedef void ASY_TESTPROC_T ((OIDC_T lastmatch, int compc, OIDC_T *compl, ...)); typedef void ASY_GETPROC_T (OIDC_T lastmatch, int compc, OIDC_T *compl, ...); typedef void ASY_SETPROC_T (OIDC_T lastmatch, int compc, OIDC_T *compl, ...); typedef void ASY_NEXTPROC_T (OIDC_T lastmatch, int compc, OIDC_T *compl, ...); ***************************************************************************** Notice how only the first one ASY_TESTPROC_T has the double paranthesis, and is on 2 lines. Yamin Quoting Eljay Love-Jensen <eljay@xxxxxxxxx>: > Hi Yamin, > > What does the -E (preprocess only) output of that code look like? > > --Eljay > > ---------------------------------------- This mail sent through www.mywaterloo.ca