[I missed this thread, so I'm reposting my reply that I originally
sent to source-changes-d]

On Tue, Nov 06, 2018 at 16:38:06 +0000, co...@sdf.org wrote:

> On Tue, Nov 06, 2018 at 08:11:03AM -0800, John Nemeth wrote:
> > On Nov 6,  3:07pm, co...@sdf.org wrote:
> > }
> > } I wanna do this, looks good?
> > 
> >      No.
> > 
> > } Index: stdint.h
> > } ===================================================================
> > } RCS file: /cvsroot/src/sys/sys/stdint.h,v
> > } retrieving revision 1.7
> > } diff -u -r1.7 stdint.h
> > } --- stdint.h      22 Apr 2013 21:26:48 -0000      1.7
> > } +++ stdint.h      4 Nov 2018 09:35:54 -0000
> > } @@ -35,54 +35,54 @@
> > }  #include <sys/cdefs.h>
> > }  #include <machine/int_types.h>
> > }  
> > } -#ifndef  int8_t
> > } +#ifndef  _BSD_INT8_T_
> > }  typedef  __int8_t        int8_t;
> > } -#define  int8_t          __int8_t
> > } +#define  _BSD_INT8_T_
> > }  #endif
> > 
> >      What's going to define _BSD_INT8_T_ and friends?
> > 
> >      To me, this looks smells like some kind of gross hack to work around
> > broken software.
> > 
> >      [snip]
> > 
> > }-- End of excerpt from co...@sdf.org
> 
> We are. it's a guard to prevent double type definition.

I would argue that the example from

  https://mail-index.netbsd.org/tech-pkg/2018/10/25/msg020395.html

is if not outright wrong then at the very minimum unhygienic, as it
doesn't use the same preprocessor nesting for the definition of the
name and the use of the name, i.e. it incorrectly assumes that the
function will be named "something_uint32_t".

Also your change breaks redefining intN_t types with the preprocessor.
E.g.

    #define uint32_t unsigned long long
    #include <stdint.h>

is now broken with your change.

-uwe

Reply via email to