Date: Mon, 28 Apr 2008 14:53:29 +0200 From: "Lukasz Jaroszewski" <sigtrm@gmail.com> To: freebsd-hackers@freebsd.org Subject: RE: indent(1) support for gcc(1) 0b prefix Message-ID: <aed2bfaf0804280553s6fcc01afma6a040509ab6cb50@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
>On Apr 26, 2008, at 5:01 PM, Max Laier wrote: >>* On Saturday 26 April 2008 23:35:57 Romain Tarti=E8re wrote: *>>>* Hello FreeBSD hackers! *>>>* *>>>* I'm using avr-gcc from the ports and relying on the 0b prefix *>>>* notation *>>>* for binary constants, that is: *>>>* *>>>* =09foo =3D 0b00101010; *>>>* *>>>* Thanks to /usr/ports/devel/avr-gcc/files/patch-0b-constants this is *>>>* possible :-) *>>>* *>>>* But I would like to use indent(1) to reformat contributed code *>>>* automatically. Unfortunately, the 0b notation is not supported by *>>>* that *>>>* program, and the resulting code looks like this: *>>>* *>>>* =09foo =3D 0 b00101010; *>>>* *>>>* ... then compilation fails, bla bla bla... *>>* *>>* I can't think of a case (outside of "0x...." context) where "...0b..." *>>* would be valid C code, let alone better formated as "...0 b...". *>>* Hence I *>>* see no harm in adding your patch to the base indent(1). *>>* *>>* Does anyone have an example where "...0 b..." is valid C code? *> >Well, if b... is a preprocessor define then you can easily >come up with valid C: > >#define b...=09*2 > >then:=09=09...0 b... >becomes:=09...0 *2 > >That's a valid expression in the right context... > >FYI, > >-- >Marcel Moolenaar >xcllnt at mac.com <http://lists.freebsd.org/mailman/listinfo/freebsd-hacke= rs> >From c-faq.com( by Bill Finke ): #define Ob(x) ((unsigned)Ob_(0 ## x ## uL)) #define Ob_(x) (x & 1 | x >> 2 & 2 | x >> 4 & 4 | x >> 6 & 8 |=09=09\ =09x >> 8 & 16 | x >> 10 & 32 | x >> 12 & 64 | x >> 14 & 128) --- #define PORT_SYSCTLA 0x092 /* PS2 system control port A */ #define SYSCTLA_DSK Ob(10000000) /* lights the fixed dsk activity led */ #define SYSCTLA_DSK0 Ob(01000000) /* also lights fixed disk actvty led */ #define SYSCTLA_TMOT Ob(00010000) /* watchdog timer has timed-out */ #define SYSCTLA_LOCK Ob(00001000) /* CMOS password area is locked */ #define SYSCTLA_A20 Ob(00000010) /* alternate address line 20 gating */ #define SYSCTLA_RST Ob(00000001) /* alternate hot reset */ regards LJ776-RIPE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?aed2bfaf0804280553s6fcc01afma6a040509ab6cb50>