源文件经过编译器,可以产生lib 、dll、 exe 。
运算符<<就是函数而已,如下:
std::cout<<" dump duck ! "<<std :: endl;
等价于 ==
std ::cout.print(" dump duck !").print(std ::endl);
visual studio 中的solution 配置,是定义了如何为当前平台 编译的规则。
函数的声明与定义:
如果声明,没定义,那么就可以过编译,但是过不了linker
所以,linker的工作就是resolve symbols,联通各个函数,用声明去找函数的定义,再把他们两个连接起来。
编译过程:
1、预处理pre-processor,评估所有#
2、标记解释 和 解析
结果是创建某种 abstract syntax tree 抽象语法树。也就是我们自己写的代码的表达,是用抽象语法树的方式表达。
说到底编译就是把源代码 转成 const 常量 、指令,只要抽象语法树构建完成,就可以产生机器代码了。
连接过程:
当运行你的程序时,C runtime 库就会所,main函数在哪里,要调到哪里开始执行代码。
可以自己定义程序的entry point ,也就是main函数,具体在连接器的高级选项中。
static 关键字,用他定义的东西只在当前的编译单元(cpp)中有效。