Can you summarize the following document?
        
  C语言标准规定,预处理是指前4个编译阶段(phases of translation)。

  用于包含另一个文件:

  if-else指令包括codice_1, codice_2, codice_3, codice_4, codice_5 and codice_6.

  有两种宏:  宏定义可以用codice_7取消:

  codice_8 与 codice_9, 扩展为当前文件与行号。例如: C或C++语言标准定义了宏: codice_10, codice_11, codice_12,codice_13,codice_14,codice_15等。

  codice_16运算符(Stringification Operator)把随后的token转化为C语言的字符串。 即使#运算符后面的是另一个宏名,这个宏名将不会被宏展开,而是按照字面值被当作一个字符串。因此,如果需要#运算符后面的宏名做宏展开,需要使用两层宏的嵌套使用,其中外层的宏展开时也一并把#运算符后面的宏名做宏展开。例如:

  codice_17运算符(Token Pasting Operator)连接两个token为一个token. codice_17运算符左侧或右侧如果是另一个宏名,这个宏名将不会被宏展开,而是按照字面值被当作一个token。因此,如果需要##运算符左右的宏名做宏展开,需要使用两层宏的嵌套使用,其中外层的宏展开时也一并把##运算符左右的宏名做宏展开。

  codice_19指令提供了编译器特定的预处理功能。
C预处理器是C语言、C++语言的预处理器。用于在编译器处理程序之前预扫描源代码,完成头文件的包含, 宏扩展, 条件编译, 行控制(line control)等操作。