indent(1) support for gcc(1) 0b prefix
Lukasz Jaroszewski
sigtrm at gmail.com
Mon Apr 28 13:22:50 UTC 2008
>On Apr 26, 2008, at 5:01 PM, Max Laier wrote:
>>* On Saturday 26 April 2008 23:35:57 Romain Tartière wrote:
*>>>* Hello FreeBSD hackers!
*>>>*
*>>>* I'm using avr-gcc from the ports and relying on the 0b prefix
*>>>* notation
*>>>* for binary constants, that is:
*>>>*
*>>>* foo = 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:
*>>>*
*>>>* foo = 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... *2
>
>then: ...0 b...
>becomes: ...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-hackers>
>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 | \
x >> 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
More information about the freebsd-hackers
mailing list