Nobody else admits to running such old compilers and systems! ;^> I would reduce that test to: #if __STDC_VERSION__ < 199901 # define restrict #endif In general for standards feature tests: #if defined(__STDC__) # define C89 # if defined(__STDC_VERSION__) # define C90 # if (__STDC_VERSION__ >= 199409L) # define C94 # endif # if (__STDC_VERSION__ >= 199901L) # define C99 # endif # if (__STDC_VERSION__ >= 201112L) # define C11 # endif # if (__STDC_VERSION__ >= 201710L) # define C17 # endif # if (__STDC_VERSION__ >= 202000L) /* TBD */ # define C2X # endif # endif #endif For updates see: $ info cpp macros predef standard also: https://en.wikipedia.org/wiki/Microsoft_Visual_C++#Internal_version_numberin... On 2023-11-16 12:58, Alois Treindl via tz wrote:
I fixed it by adding after private.h line 558:
It now reads
#if (__STDC_VERSION__ < 199901 && !defined restrict \ && (PORT_TO_C89 || defined _MSC_VER)) # define restrict #else # define restrict #endif
But I wonder why nobody stumbled upon this.
On 16.11.23 20:51, Alois Treindl via tz wrote:
I just made a new clone of tz.
I work normally on RHEL 7 (redhat enterprise Linux) with gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
When I say make or make all, I get something I never observed before:
cc -DTZDIR='"/usr/share/zoneinfo"' -c -o zic.o zic.c In file included from zic.c:16:0: private.h:791:60: error: conflicting types for ‘restrict’ struct tm *localtime_rz(timezone_t restrict, time_t const *restrict, ^ private.h:791:36: note: previous definition of ‘restrict’ was here struct tm *localtime_rz(timezone_t restrict, time_t const *restrict, ^ private.h:792:15: error: conflicting types for ‘restrict’ struct tm *restrict); ^ private.h:791:60: note: previous definition of ‘restrict’ was here struct tm *localtime_rz(timezone_t restrict, time_t const *restrict, ^ private.h:793:49: error: conflicting types for ‘restrict’ time_t mktime_z(timezone_t restrict, struct tm *restrict); ^ private.h:793:28: note: previous definition of ‘restrict’ was here time_t mktime_z(timezone_t restrict, struct tm *restrict);
This does not happen when I compile on RHEL 9 gcc version 11.4.1 20230605 (Red Hat 11.4.1-2) (GCC)
Can anyone point me to a fix?
-- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut -- Antoine de Saint-Exupéry