OSDN Git Service

Regular updates
[twpd/master.git] / c_preprocessor.md
index 69f5f82..6684ac0 100644 (file)
@@ -1,50 +1,79 @@
 ---
 title: C Preprocessor
 category: C-like
+layout: 2017/sheet
+intro: |
+  Quick reference for the [C macro preprocessor](https://en.m.wikipedia.org/wiki/C_preprocessor), which can be used independent of C/C++.
 ---
 
+## Reference
+{: .-three-column}
+
 ### Compiling
 
-    $ cpp -P file > outfile
+```
+$ cpp -P file > outfile
+```
 
 ### Includes
 
-    #include "file"
+```
+#include "file"
+```
 
 ### Defines
 
-    #define FOO
-    #define FOO "hello"
+```
+#define FOO
+#define FOO "hello"
 
-    #undef FOO
+#undef FOO
+```
 
 ### If
 
-    #ifdef DEBUG
-      console.log('hi');
-    #elif defined VERBOSE
-      ...
-    #else
-      ...
-    #endif
+```
+#ifdef DEBUG
+  console.log('hi');
+#elif defined VERBOSE
+  ...
+#else
+  ...
+#endif
+```
 
 ### Error
 
-    #if VERSION == 2.0
-      #error Unsupported
-      #warning Not really supported
-    #endif
+```
+#if VERSION == 2.0
+  #error Unsupported
+  #warning Not really supported
+#endif
+```
 
 ### Macro
 
-    #define DEG(x) ((x) * 57.29)
+```
+#define DEG(x) ((x) * 57.29)
+```
 
 ### Token concat
 
-    #define DST(name) name##_s name##_t
-    DST(object);   #=> "object_s object_t;"
+```
+#define DST(name) name##_s name##_t
+DST(object);   #=> object_s object_t;
+```
+
+### Stringification
+
+```
+#define STR(name) #name
+char * a = STR(object);   #=> char * a = "object";
+```
 
 ### file and line
 
-    #define LOG(msg) console.log(__FILE__, __LINE__, msg)
-    #=> console.log("file.txt", 3, "hey")
+```
+#define LOG(msg) console.log(__FILE__, __LINE__, msg)
+#=> console.log("file.txt", 3, "hey")
+```