以上得知,C/C++语言的头文件起到了两个作用。第一,封装。封装了头文件的代码,使其得以被其他程序方便调用。第二,明确代码调用关系。
假如编译器试图通过某些手段去除头文件,那么必须要从代码中推断出引用代码的出处。请看一个简单的C++语言程序,helloworld.cpp
intmain(){
cout<<“hello,world\n”;
printf(“hello,world\n”);
}
编译器在helloworld.cpp中,找不到cout和printf的定义。怎么办?啊,简单,让编译器去标准库里找不就是了,cout在iostram里定义,printf在cstdio中。你知道,C/C++标准库很庞大,每次编译时要去蛮力搜索查找,时间上很昂贵,除非事先做了加速处理,然而引入了更多的工程问题。
好,那么大家多加两行代码
intmain(){
cout<<“hello,world\n”;
printf(“hello,world\n”);
Persondmr(“Dennis”,”Ritchie”);
cout<<dmr.last_name()<<endl;
}
问题来了。代码中没有Person类的定义。怎么办?去哪里找?大家必须告诉编译器,不然它只能在系统里去蛮力查找,时间上很昂贵,而且可能找错,毕竟也许有多个文件定义Person类呢!所以大家必须在源代码里标注出。绕了一圈,不是回到起点了,那不就是头文件吗?
为了省掉头文件或者在头文件处理上加上很多控制,从编译效率和代码可读性上,投入和收益比,没有明显提升,甚至下降。于是,C/C++头文件成了现实的工程选择。
有帮助,请点赞。
更多精彩文章和回答,请关注
微信公众号:IT之州
今日:IT之州
新浪微博:IT之州