1:什么是预编译?何时需要预编译?
答:
预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。.
何时需要预编译:
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译
2.写一个“标准”宏,这个宏输入两个参数并返回较小的一个
:#define MIN(x, y) ((x)<(y)?(x):(y)) //结尾没有;
3. #与##的作用?
#是把宏参数转化为字符串的运算符,##是把两个宏参数连接的运算符。
4. static关键字的作用?
Static的用途主要有两个,一是用于修饰存储类型使之成为静态存储类型,二是用于修饰链接属性使之成为内部链接属性。
- 静态存储类型:
在函数内定义的静态局部变量,该变量存在内存的静态区,所以即使该函数运行结束,静态变量的值不会被销毁,函数下次运行时能仍用到这个值。
在函数外定义的静态变量——静态全局变量,该变量的作用域只能在定义该变量的文件中,不能被其他文件通过extern引用。 - 内部链接属性
静态函数只能在声明它的源文件中使用。