Quick reference for the C macro preprocessor, which can be used independent of C/C++.

## Reference

### Compiling

    $ cpp -P file > outfile

### Includes

    #include "file"

### Defines

    #define FOO
    #define FOO "hello"

    #undef FOO

### If

    #ifdef DEBUG
      console.log('hi');
    #elif defined VERBOSE
      ...
    #else
      ...
    #endif

### Error

    #if VERSION == 2.0
      #error Unsupported
      #warning Not really supported
    #endif

### Macro

    #define DEG(x) ((x) * 57.29)

### Token concat

    #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")

0 Comments for this cheatsheet. Write yours!