* data/c.m4 (b4_c_function_def): Look at __C99_FUNC__, not at

__STDC_VERSION__, as IBM cc 7.0 doesn't define the latter either.
Problem reported by John P. Hartmann.
* data/yacc.c (YYMODERN_C): Likewise.  Don't define if the user has
already defined it.
This commit is contained in:
Paul Eggert
2005-10-13 06:23:54 +00:00
parent 9b8a5ce03b
commit ba0fe3c710
3 changed files with 29 additions and 19 deletions

View File

@@ -232,7 +232,7 @@ m4_define([b4_token_enums_defines],
# ----------------------------------------------------------
# Declare the function NAME.
m4_define([b4_c_function_def],
[#if defined (__STDC__) || defined (__STDC_VERSION__) || defined (__cplusplus)
[#if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
b4_c_ansi_function_def($@)
#else
$2

View File

@@ -219,15 +219,17 @@ typedef struct YYLTYPE
/* Line __line__ of yacc.c. */
b4_syncline([@oline@], [@ofile@])[
/* Define YYMODERN_C if this compiler supports C89 or better. Some
modern compilers (e.g., IBM xlc 7.0) don't define __STDC__ for
pedantic reasons, but they define __STDC_VERSION__ so check that
as well. Consider a C++ compiler to be modern if it defines
__cplusplus. */
#if defined (__STDC__) || defined (__STDC_VERSION__) || defined (__cplusplus)
# define YYMODERN_C 1
#else
# define YYMODERN_C 0
/* Define YYMODERN_C if this compiler supports C89 or better. If
__STDC__ is defined, the compiler is modern. IBM xlc 7.0 when run
as 'cc' doesn't define __STDC__ (or __STDC_VERSION__) for pedantic
reasons, but it defines __C99__FUNC__ so check that as well.
Consider a C++ compiler to be modern if it defines __cplusplus. */
#ifndef YYMODERN_C
# if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
# define YYMODERN_C 1
# else
# define YYMODERN_C 0
# endif
#endif
#ifndef YYSIZE_T