Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jul 1998 07:51:23 -0700 (PDT)
From:      "Jonathan M. Bresler" <jmb>
To:        rivers@dignus.com (Thomas David Rivers)
Cc:        hackers@hub.freebsd.org, jmb@FreeBSD.ORG
Subject:   Re: macro expansion with gcc
Message-ID:  <199807221451.HAA14189@hub.freebsd.org>
In-Reply-To: <199807221444.KAA00397@lakes.dignus.com> from Thomas David Rivers at "Jul 22, 98 10:44:47 am"

next in thread | previous in thread | raw e-mail | index | archive | help
Thomas David Rivers wrote:
> > 
> > 	gcc -E runs the preprocessor, so i expected that all macros
> > 	would be expanded....but thats not what happened.
> > 
> > 	what switch do i need to get the token pasting "##" 
> > 	operation to take effect and leave behind the C code?
> > 
> > 
> > jmb
> > 
> > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > with "unsubscribe freebsd-hackers" in the body of the message
> > 
> 
>  It should have expanded everything... token pasting is a little
> tricky though..., so it may not be pasting the way you expect. 
> [I know I, personally, frequently get this wrong.] Can you point us 
> to an example where it didn't seem to do the expansion?

	will do.

	/sys/kern/kern_clock.c contains:

SYSCTL_NODE(_kern, OID_AUTO, timecounter, CTLFLAG_RW, 0, "");

SYSCTL_PROC(_kern_timecounter, OID_AUTO, frequency, CTLTYPE_INT | CTLFLAG_RW,
    0, sizeof(u_int), sysctl_kern_timecounter_frequency, "I", "");

SYSCTL_PROC(_kern_timecounter, OID_AUTO, adjustment, CTLTYPE_INT | CTLFLAG_RW,
    0, sizeof(int), sysctl_kern_timecounter_adjustment, "I", "");

	which "cd /sys/kern; gcc -E kern_clock.c" expands to:

SYSCTL_NODE(_kern, (-1) , timecounter, (0x80000000 | 0x40000000 ) , 0, "");

SYSCTL_PROC(_kern_timecounter, (-1) , frequency, 
    2  | (0x80000000 | 0x40000000 ) ,
    0, sizeof(u_int), sysctl_kern_timecounter_frequency, "I", "");

SYSCTL_PROC(_kern_timecounter, (-1) , adjustment, 
    2  | (0x80000000 | 0x40000000 ) ,
    0, sizeof(int), sysctl_kern_timecounter_adjustment, "I", "");


	defining KERNEL......grrr.....make all the difference in the world!
	sorry to have bothered you all ;)


extern struct linker_set sysctl__kern_timecounter ; static const struct sysctl_o
id sysctl___kern_timecounter   = {     (-1)   ,   1 |  (0x80000000 | 0x40000000 
)   ,   (void*)&sysctl__kern_timecounter  ,   0 , "timecounter",     0  ,   "N" 
 }; static void const * const __set_sysctl__kern_sym_sysctl___kern_timecounter  
   = &    sysctl___kern_timecounter    ; __asm(".stabs \"_" "sysctl__kern" "\", 
" "23" ", 0, 0, _" "sysctl___kern_timecounter")   ; static void const * const __
set_sysctl__kern_timecounter_sym_sysctl___kern_timecounter    = &    sysctl___ke
rn_timecounter   ; __asm(".stabs \"_" "sysctl__kern_timecounter" "\", " "23" ", 
0, 0, _" "sysctl___kern_timecounter")   ;

	etc...

jmb

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199807221451.HAA14189>