Index: docs/pdds/pdd07_codingstd.pod
===================================================================
RCS file: /cvs/public/parrot/docs/pdds/pdd07_codingstd.pod,v
retrieving revision 1.9
diff -u -r1.9 pdd07_codingstd.pod
--- docs/pdds/pdd07_codingstd.pod	28 Jul 2003 18:52:48 -0000	1.9
+++ docs/pdds/pdd07_codingstd.pod	2 Sep 2003 01:02:45 -0000
@@ -91,7 +91,7 @@
 
 =item *
 
-"K&R" style for indenting control constructs: ie the closing C<}> should
+"K&R" style for indenting control constructs: ie the closing C<}> must
 line up with the opening C<if> etc.
 
 =item *
@@ -124,8 +124,8 @@
 
 =item *
 
-Variable names should be included for all function parameters in the
-function declarations.  These names should match the parameters in the
+Variable names must be included for all function parameters in the
+function declarations.  These names must match the parameters in the
 function definition.
 
 =item *
@@ -133,6 +133,34 @@
 Single space after keywords that are followed by C<()>, eg
 C<return (x+y)*2>, but no space between function name and following C<()>,
 eg C<z = foo(x+y)*2>
+
+=item *
+
+You must insert the following linkage specification
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+in every include file right after the _GUARD define with an optinal empty string
+between those. You can deviate from this rule only when your include file
+includes other ones that can't have C linkage, like C<math.h>. At that rate, you
+must do this
+
+#if defined(__cplusplus)
+}                        /* close extern "C" temporarily */
+#endif
+
+#include <math.h>
+
+#if defined(__cplusplus)
+extern "C"               /* open it anew */
+{
+#endif
+
+or move such include files to the beginning, between the _GUARD define and the
+initial linkage specification.
 
 =back
 
