1.编译过程首先是预处理器处理,在这个阶段,预处理器再源代码上执行一些文本操作。例如,用实际值代替由#define 指令定义的符号 以及读入由#include 指令包含的文件内容。然后,源代码经过解析,判断它的语句的意思;随后,便产生目标代码。优化器会对目标代码进一步进行处理,使它效率更高,但需要额外的时间。
2.空白字符包括,空格,水平制表符,垂直制表符,格式反馈字符和换行符。
3.标准还定义了三字母词的字符,实际用到的少,不建议使用。
4.转移字符的使用。
\?在书写连续多个?时,防止被解释为三字母符
\"用于表示一个字符串常量内部的双引号
\'用于表示字符常量'.例如'\'';
\\用于表示一个反斜杠。
5.所有的注释都会被预处理器拿掉,取而代之的是一个空格。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
int braces = 0;
while ((ch = getchar()) != EOF)
{
if (ch == '{')
{
braces += 1;
}
if (ch == '}')
{
if (braces == 0)
{
printf("%Extra closing brace!\n");
}
else
{
braces -= 1;
}
}
}
if (braces > 0)
{
printf("%d unmatched opening brace(s)!\n",braces);
}
return EXIT_SUCCESS;
}