+ * \section GRAS_dd_multifile Projects spanning over multiple files
+ *
+ * GRAS_DEFINE_TYPE declares some symbols to work, it needs some special
+ * care when used in several files. In such case, you want the regular type
+ * definition in all files, but the gras specific symbol defined in only
+ * one file. For example, consider the following gras project sketch.
+ *
+\verbatim #include <gras.h>
+
+GRAS_DEFINE_TYPE(my_type,struct my_type {
+ int a;
+ int b;
+ double c;
+});
+
+int client(int argc, char *argv[]) {
+ ...
+}
+
+int server(int argc, char *argv[]) {
+ ...
+}\endverbatim
+ *
+ * If you want to split this in two files (one for each kind of processes),
+ * you need to put the GRAS_DEFINE_TYPE block in a separate header. But
+ * then you cannot include this right away in all files because the extra
+ * symbols would be defined in dupplicate.
+ *
+ * You thus have to decide in which file the symbols will live. In that
+ * file, include the header without restriction:
+ *
+\verbatim #include "my_header.h"
+
+int client(int argc, char *argv[]) {
+ ...
+}\endverbatim
+
+ * And in the other files needing the C definitions without the extra GRAS
+ * symbols, declare the symbol GRAS_DEFINE_TYPE_EXTERN before:
+ *
+\verbatim #define GRAS_DEFINE_TYPE_EXTERN
+#include "my_header.h"
+
+int server(int argc, char *argv[]) {
+ ...
+}\endverbatim
+
+ *