# The goal being to be able to understand C code, rather than writing it effectively. ## C preprocessor Produces a new file that compiler will process. Command to preprocessor start line with a # symbol as the first non-whitespace character. \#include : use to pull the contents of one file into the current source file. For ex to pull the entire content of `multiprocessing.h` : ``` #include "multiprocessing.h" ``` \#define : lets you define a new symbol that gets replaced with a text string . For ex. `#define SEM_FAILED NULL` replace every instance of `SEM_FAILED` with the literal string `NULL` before the code is sent to the compiler. \#under : erases any previous preprocessor definition from \#define. You can have \#define effect only a section of the file. \#if : conditional statements, which allow to include/exclude certain sections of the text based on certain conditions. There are three basic forms of \#if in CPython source: 1. \#ifdef includes the subsequent text-block if the macro is defined. 2. \#ifndef includes the text-block if the specified macro is not defined. 3. \#if includes the text-block if macro defined and True. \#pragma : instructions or hint to the compiler. Usually deals with how code is compiled not how it runs. \#error : displays a message and cause the preprocessor to stop executing. ### Preprocessor directives ### C syntax compared to python. ### Loops, functions and strings.