summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2002-07-17 16:30:39 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2002-07-17 16:30:39 (GMT)
commit938ace69a0e112424a2f426a4881d1fd1fc922d2 (patch)
tree29d42e42ec17a6ba2124b6fa36c3f00b23534413 /Include
parent9cb64b954ae1bc3f0caeba98227de64cb6873026 (diff)
downloadcpython-938ace69a0e112424a2f426a4881d1fd1fc922d2.zip
cpython-938ace69a0e112424a2f426a4881d1fd1fc922d2.tar.gz
cpython-938ace69a0e112424a2f426a4881d1fd1fc922d2.tar.bz2
staticforward bites the dust.
The staticforward define was needed to support certain broken C compilers (notably SCO ODT 3.0, perhaps early AIX as well) botched the static keyword when it was used with a forward declaration of a static initialized structure. Standard C allows the forward declaration with static, and we've decided to stop catering to broken C compilers. (In fact, we expect that the compilers are all fixed eight years later.) I'm leaving staticforward and statichere defined in object.h as static. This is only for backwards compatibility with C extensions that might still use it. XXX I haven't updated the documentation.
Diffstat (limited to 'Include')
-rw-r--r--Include/object.h27
1 files changed, 9 insertions, 18 deletions
diff --git a/Include/object.h b/Include/object.h
index 736095a..3397662 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -616,28 +616,19 @@ extern DL_IMPORT(PyObject) _Py_NotImplementedStruct; /* Don't use this directly
#define Py_GE 5
/*
-A common programming style in Python requires the forward declaration
-of static, initialized structures, e.g. for a type object that is used
-by the functions whose address must be used in the initializer.
-Some compilers (notably SCO ODT 3.0, I seem to remember early AIX as
-well) botch this if you use the static keyword for both declarations
-(they allocate two objects, and use the first, uninitialized one until
-the second declaration is encountered). Therefore, the forward
-declaration should use the 'forwardstatic' keyword. This expands to
-static on most systems, but to extern on a few. The actual storage
-and name will still be static because the second declaration is
-static, so no linker visible symbols will be generated. (Standard C
-compilers take offense to the extern forward declaration of a static
-object, so I can't just put extern in all cases. :-( )
+Define staticforward and statichere for source compatibility with old
+C extensions.
+
+The staticforward define was needed to support certain broken C
+compilers (notably SCO ODT 3.0, perhaps early AIX as well) botched the
+static keyword when it was used with a forward declaration of a static
+initialized structure. Standard C allows the forward declaration with
+static, and we've decided to stop catering to broken C compilers.
+(In fact, we expect that the compilers are all fixed eight years later.)
*/
-#ifdef BAD_STATIC_FORWARD
-#define staticforward extern
-#define statichere static
-#else /* !BAD_STATIC_FORWARD */
#define staticforward static
#define statichere static
-#endif /* !BAD_STATIC_FORWARD */
/*