First, happy new year all.

 

Porting tcc on *BSD systems raised issues/questions with stddef.h from tcc
distrib.

 

First, it contains a mix of definitions coming from both stddef.h and
stdint.h IMHO it should only contain what stddef.h is supposed to contain.

i.e. From C11:

 

B.18 Common definitions <stddef.h>

ptrdiff_t

size_t

max_align_t

wchar_t

NULL

offsetof(type, member-designator)

_ _STDC_WANT_LIB_EXT1_ _

rsize_t

 

Howerver it also contain many [u]intN_t type definitions which duplicate
what is found on stdint.h

 

The issues come when a valid program frist includes <stdint.h> then
<stddef.h>

It first finds [u]intN_t definitions in system [/usr/include/]stdint.h file
which are duplicated/redefined in [tcc/include/]stddef.h from tcc.

When definitions differ, tcc stops as some with *BSD systems and [u]int64_t
definitions.

 

Questions:

 

Why tcc needs its own stddef.h instead of system one?

Why tcc does not need stdint.h?

 

I suppose it is because tcc does not support all gcc syntaxes found on
stddef.h (is it still true?) in that case, it would be better to split
definitions in stddef.h and stdint.h following the ISO C11 standard.

 

Clarifications/fixes are welcome.

 

C. 

_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to