On Sat, 31 May 2003 at 10:25 +1200, Bernard Mentink <[email protected]>...:

> Beg to differ, The pre-processor does not know it is a number .... it's
> just a token at this stage, and it
> does not know what it is, so should report the whole
> string.....afterall a##b is a concatination of strings

cpp (the tool invoked via gcc -E does report the whole number

$ cat concat.c
#define CONCAT4(a,b,c,d) a##b##c##d
CONCAT4(123,456,789,1_2)
$ gcc -E concat.c
# 1 "concat.c"

 1234567891_2

The error report that you are getting is from
the C compiler, and the rules for parsing a number
cause it to stop before the underscore

> Do you have any <helpful> suggestions to help me solve the original
> problem?

I would like to help, but perhaps you could describe the real
problem you are trying to solve.  I did take the time
to re-read all your posts on the subject.

Perhaps you could create a different test case that
is closer to the real problem, as I think the numeric
processing issue is a distraction.

 David

Reply via email to