aboutsummaryrefslogtreecommitdiff
path: root/src/include/c.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1999-04-02 05:10:16 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1999-04-02 05:10:16 +0000
commitf620241d73516b66ecad84084e645a617194efc0 (patch)
treed5d1d9bef7504b0c84c4f03cf5e9526eaa14a1d5 /src/include/c.h
parent0b874f01ddd899e21275934bc078cf189c3dd06c (diff)
downloadpostgresql-f620241d73516b66ecad84084e645a617194efc0.tar.gz
postgresql-f620241d73516b66ecad84084e645a617194efc0.zip
Remove overly presumptuous use of __STDC__ in c.h, replacing
it with configure-script tests to see whether const, inline, volatile, etc work or not. (Curiously, configure was already doing the work to see if const and inline were OK, but the results were not getting plugged into config.h :-(.)
Diffstat (limited to 'src/include/c.h')
-rw-r--r--src/include/c.h134
1 files changed, 35 insertions, 99 deletions
diff --git a/src/include/c.h b/src/include/c.h
index d3a2a0eea48..4e604a88efc 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: c.h,v 1.53 1999/03/30 01:37:28 momjian Exp $
+ * $Id: c.h,v 1.54 1999/04/02 05:10:14 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -19,11 +19,10 @@
*
* section description
* ------- ------------------------------------------------
- * 1) bool, true, false, TRUE, FALSE
- * 2) __STDC__, non-ansi C definitions:
- * Pointer typedef, NULL
- * cpp magic macros
+ * 1) bool, true, false, TRUE, FALSE, NULL
+ * 2) non-ansi C definitions:
* type prefixes: const, signed, volatile, inline
+ * cpp magic macros
* 3) standard system types
* 4) datum type
* 5) IsValid macros for system types
@@ -31,7 +30,7 @@
* 7) exception handling definitions, Assert, Trap, etc macros
* 8) Min, Max, Abs, StrNCpy macros
* 9) externs
- * 10) Berkeley-specific defs
+ * 10) Berkeley-specific defs
* 11) system-specific hacks
*
* NOTES
@@ -58,7 +57,7 @@
#endif
/* ----------------------------------------------------------------
- * Section 1: bool, true, false, TRUE, FALSE
+ * Section 1: bool, true, false, TRUE, FALSE, NULL
* ----------------------------------------------------------------
*/
/*
@@ -66,13 +65,13 @@
* Boolean value, either true or false.
*
*/
-#define false ((char) 0)
-#define true ((char) 1)
#ifndef __cplusplus
#ifndef bool
typedef char bool;
#endif /* ndef bool */
#endif /* not C++ */
+#define false ((bool) 0)
+#define true ((bool) 1)
typedef bool *BoolPtr;
#ifndef TRUE
@@ -83,99 +82,43 @@ typedef bool *BoolPtr;
#define FALSE 0
#endif /* FALSE */
-/* ----------------------------------------------------------------
- * Section 2: __STDC__, non-ansi C definitions:
- *
- * cpp magic macros
- * Pointer typedef, NULL
- * type prefixes: const, signed, volatile, inline
- * ----------------------------------------------------------------
- */
-
-#ifdef __STDC__ /* ANSI C */
-
-/*
- * Pointer
- * Variable holding address of any memory resident object.
- */
-
-/*
- * XXX Pointer arithmetic is done with this, so it can't be void *
- * under "true" ANSI compilers.
- */
-typedef char *Pointer;
-
-#ifndef NULL
/*
* NULL
* Null pointer.
*/
-#define NULL ((void *) 0)
-#endif /* !defined(NULL) */
-
-#define HAVE_ANSI_CPP /* all ANSI C compilers must have this! */
-#if defined(NEED_STD_HDRS)
-#undef NEED_STD_HDRS /* all ANSI systems must have
- * stddef/stdlib */
-#endif /* NEED_STD_HDRS */
-
-#else /* !defined(__STDC__) *//* NOT ANSI C */
-
-/*
- * Pointer
- * Variable containing address of any memory resident object.
- */
-typedef char *Pointer;
-
#ifndef NULL
-/*
- * NULL
- * Null pointer.
- */
-#define NULL 0
+#define NULL ((void *) 0)
#endif /* !defined(NULL) */
-/*
- * const
- * Type modifier. Identifies read only variables.
+/* ----------------------------------------------------------------
+ * Section 2: non-ansi C definitions:
*
- * Example:
- * extern const Version RomVersion;
- */
-#ifndef WIN32
-#define const /* const */
-#endif
-
-/*
- * signed
- * Type modifier. Identifies signed integral types.
+ * type prefixes: const, signed, volatile, inline
+ * cpp magic macros
+ * ----------------------------------------------------------------
*/
-#define signed /* signed */
/*
- * volatile
- * Type modifier. Identifies variables which may change in ways not
- * noticeable by the compiler, e.g. via asynchronous interrupts.
- *
- * Example:
- * extern volatile unsigned int NumberOfInterrupts;
+ * We used to define const, signed, volatile, and inline as empty
+ * if __STDC__ wasn't defined. Now we let configure test whether
+ * those keywords work; config.h defines them as empty if not.
*/
-#define volatile /* volatile */
-
-#endif /* !defined(__STDC__) */ /* NOT ANSI C */
/*
* CppAsString
* Convert the argument to a string, using the C preprocessor.
* CppConcat
* Concatenate two arguments together, using the C preprocessor.
+ *
+ * Note: the standard Autoconf macro AC_C_STRINGIZE actually only checks
+ * whether #identifier works, but if we have that we likely have ## too.
*/
-#if defined(HAVE_ANSI_CPP)
+#if defined(HAVE_STRINGIZE)
#define CppAsString(identifier) #identifier
#define CppConcat(x, y) x##y
-#else /* !HAVE_ANSI_CPP */
+#else /* !HAVE_STRINGIZE */
#define CppAsString(identifier) "identifier"
@@ -190,40 +133,33 @@ typedef char *Pointer;
#define _priv_CppIdentity(x)x
#define CppConcat(x, y) _priv_CppIdentity(x)y
-#endif /* !HAVE_ANSI_CPP */
-
-#ifndef __GNUC__ /* GNU cc */
-#endif
+#endif /* !HAVE_STRINGIZE */
-#ifndef __GNUC__ /* GNU cc */
-#define inline
/*
* dummyret is used to set return values in macros that use ?: to make
* assignments. gcc wants these to be void, other compilers like char
*/
-#define dummyret char
-#else
+#ifdef __GNUC__ /* GNU cc */
#define dummyret void
+#else
+#define dummyret char
#endif
-#if defined(NEED_STD_HDRS)
-/*
- * You're doomed. We've removed almost all of our own C library
- * extern declarations because they conflict on the different
- * systems. You'll have to write your own stdlib.h.
- */
-#include "stdlib.h"
-#else /* NEED_STD_HDRS */
-#include <stddef.h>
-#include <stdlib.h>
-#endif /* NEED_STD_HDRS */
-
/* ----------------------------------------------------------------
* Section 3: standard system types
* ----------------------------------------------------------------
*/
/*
+ * Pointer
+ * Variable holding address of any memory resident object.
+ *
+ * XXX Pointer arithmetic is done with this, so it can't be void *
+ * under "true" ANSI compilers.
+ */
+typedef char *Pointer;
+
+/*
* intN
* Signed integer, EXACTLY N BITS IN SIZE,
* used for numerical computations and the