Author: paultcochrane
Date: Tue May  8 07:34:42 2007
New Revision: 18461

Modified:
   trunk/docs/pdds/pdd07_codingstd.pod

Log:
[docs] Added coding standard text concerning guard preprocessor directives
in header files.  Patch courtesy of Mike Glines.


Modified: trunk/docs/pdds/pdd07_codingstd.pod
==============================================================================
--- trunk/docs/pdds/pdd07_codingstd.pod (original)
+++ trunk/docs/pdds/pdd07_codingstd.pod Tue May  8 07:34:42 2007
@@ -254,6 +254,26 @@
 Variable names must be included for all function parameters in the function
 declarations.
 
+=item *
+
+Header files must be wrapped with guard macros, which must have a PARROT_,
+followed by some unique and descriptive text identifying the header file, and
+be followed with a _GUARD suffix.  The matching #endif must have the guard
+macro name in a comment, to prevent confusion.  For example, a file named
+parrot/foo.h might look like:
+
+    #ifndef PARROT_FOO_H_GUARD
+    #  define PARROT_FOO_H_GUARD
+    
+    #  include "parrot/config.h"
+    #  ifdef PARROT_HAS_FEATURE_FOO
+    typedef struct foo {
+       ...
+    } foo_t;
+    #  endif /* PARROT_HAS_FEATURE_FOO */
+   
+    #endif /* PARROT_FOO_H_GUARD */
+
 =back
 
 

Reply via email to