|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++ - Preprocessor
#include <string.h>
#include <stdio.h>
#define STRINGIZE(a) DO_STRINGIZE(a)
#define DO_STRINGIZE(a) # a
#define LONG_LONG long long
int main()
{
const char *s = STRINGIZE(LONG_LONG);
printf("%d\n", strlen(s));
printf("\"%s\"\n", s);
return 0;
}
The result is:
12
"long longýú"
Not exactly what I had expected, here is the string as it appears in the
object file (from obj2asm):
D0 db 06ch,06fh,06eh,067h,020h,06ch,06fh,06eh
db 067h,0fdh,0fah,001h,000h
bye, Christof
--
http://cmeerw.org JID: cmeerw jabber.at
mailto cmeerw at web.de
...and what have you contributed to the Net?
Dec 07 2002
This test-case is still a bit complex (and doesn't do anything useful):
# define CAT(a, b) CAT_I(a, b)
# define CAT_I(a, b) a ## b
# define IIF(bit) IIF_I(bit)
# define IIF_I(bit) IIF_ ## bit()
# define AUTO_REC(pred) NODE_ENTRY_ ## 2(pred)
# define NODE_ENTRY_2(p) NODE_1(p)
# define NODE_1(p) IIF(p(1))
# define AB(x) AB_I(x)
# define AB_I(x) AB_ ## x
# define WHILE CAT(WHILE_, AUTO_REC(WHILE_P))
# define WHILE_P(n) AB(CAT(WHILE_CHECK_, WHILE_ ## n()))
# define WHILE_1() WHILE_1_C()
# define WHILE_1_C() 0
#define COUNT_DOWN_C(D,N) 0
#define COUNT_DOWN_F(D,N) 0
enum { x = WHILE(COUNT_DOWN_C,COUNT_DOWN_F,0) };
This is what I get from DM (using -e -l):
enum { x = WHILE_IIF_AB_HILE_CHECK_ù0()
(COUNT_DOWN_C,COUNT_DOWN_F,0) };
At least "WHILE_IIF_AB_HILE_CHECK_ù0" can't be correct.
BTW, this is what I get from gcc 3.0:
enum { x = WHILE_IIF_AB_WHILE_CHECK_0()(COUNT_DOWN_C,COUNT_DOWN_F,0) };
bye, Christof
--
http://cmeerw.org JID: cmeerw jabber.at
mailto cmeerw at web.de
...and what have you contributed to the Net?
Dec 08 2002
|