gcc error: warning: pasting "syn" and ")" does not give a valid preprocessing token
Kiet Tran
ktran@extremenetworks.com
Wed Jul 4 15:10:00 GMT 2001
Hi Alexandre;
Thanks for the suggestion. I was able to get my code to
compile now.
However, I had to do a work around as in the following
statement:
#define TCP_EXTERN(state) \
extern pspec_t * state##_rcv_rst(tcb_t *,pspec_t *), \
* state##_rcv_syn(tcb_t *,pspec_t *), \
* state##_rcv_ack(tcb_t *,pspec_t *), \
* state##_rcv_fin(tcb_t *,pspec_t *), \
* state##_snd_rst(tcb_t *,pspec_t *), \
* state##_snd_syn(tcb_t *,pspec_t *), \
* state##_snd_ack(tcb_t *,pspec_t *), \
* state##_snd_fin(tcb_t *,pspec_t *)
My original define is as in the following:
#define TCP_EXTERN(state) \
extern pspec_t *##state##_rcv_rst(tcb_t *,pspec_t *), \
....
I removed the leading '##' pair and found that the
passing parameter of the macro was not replacing
'state' word. The preprocessor replaced the 'state'
parameter after I insert a space between the '*' character
and 'state##' word. Is this a real bug in the preprocessor?
Regards,
Kiet
More information about the Gcc-bugs
mailing list