c++文档从代码到生成程序经过编译和链接两个阶段
其中编译是将文本文件转化为.obj文件
编译过程经过 1.预处理 2.标记解释 3.解析
main.cpp
#include<iostream> void Log(const char* message); int main() { Log("Hello world!"); std::cin.get(); }
Log.cpp
#include<iostream> void Log(const char* message) { std::cout<<message<<endl; }
Math.cpp
int Multiply(int a,int b) { int result=a*b; return result; }
生成解决方案后可以在Debug文件夹下看见对应的.obj文件
obj文件由cpp中的代码和include导入的其他文件按c++规则编译而成
main.cpp,Log.cpp文件大小为40多k,而Math大小为4k,因为Math.cpp没有include其他东西
在预处理时,include打开引用文件,读取引用文件,然后将文件中的所有内容粘贴进当前的cpp
如果将Log.cpp去掉大括号
#include<iostream> void Log(const char* message) { std::cout<<message<<endl;
那么在编译时会报错,提示缺少括号。如果我们新建一个EndBrace.h其中只包含一个“}”,然后再Log.cpp中include它,程序则正确运行
#include<iostream> void Log(const char* message) { std::cout<<message<<endl; #include“EndBrace”
ctrl+F7是单独编译的快捷键,预处理的作用就是打开头文件,然后将头文件的内容粘贴到当前cpp中
原文链接: https://www.cnblogs.com/wangtianning1223/p/12605695.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/339030
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!