zoukankan      html  css  js  c++  java
  • C++之头文件&源文件

    编译模式

    c++程序中通常包含.cpp  .h文件,前者为C++的源文件,里边都是C++的源代码,后者为C++的头文件,当然也是C++的源代码
    
    C++语言支持分别编译,就是说一个程序的素有的内容可以分成不同地方分别放在不同的cpp文件内,cpp文件内的东西都是相对独立的,编译时不需要同其他文件相互交互,只需要编译成目标文件后再与其他目标的文件进行链接即可
    
    比如a.app中定义了一个全局函数,而b中想要调用这个函数,即使a、b不知道对方的存在,但是可以分别对他们进行编译,编译目标文件后再进行链接
    
    具体实现方式
    b.cpp调用void test(){}函数前,需要先声明void test()这个函数,因为编译器在编译b.cpp时将生产一个富豪榜,函数是找=不到定义的符号,就会被存在这个表中,再进行链接的时候编译器就会在别的目标文件中去寻找这个符号的定义,一旦找到了程序即可正常生成
    
    定义:将一个符号完完整整的描述出来,比如他是变量还是函数,返回什么类型等待,定义要安装C++语法完整的定义一个符号
    声明:声明这个符号的存在,告诉编译器这个符号是在其他文件中定义的,我这边先预先用上,你链接的时候再去找他是怎么样的变量函数和返回类型,声明只需要写出这个符号的原型
    

    头文件

    在python的库中是把函数写在了一个文件里边,只要程序员用的时候去调用即可,这边也不可能把一堆函数写在一个文件里,等用的时候在复制到源代码中
    
    于是乎头文件出现了,内容和cpp是一样的都是源代码,但是头文件是不能被编译的,把所有的函数声明全部丢在一个头文件中,当一个cpp文件需要他们的时候,就可以通过一个宏命令#include包含进这个cpp文件中,从而把他们的内容合并到了cpp文件内,当cpp文件被编译的董事会这些被包含的h文件就发挥作用了
    
    定义一个cpp文件
    //math.cpp
    double f1()  {  
        //do something here....  
        return;  
    }  
    double f2(double a)  {  
        //do something here...  
        return a * a;  
    }   
    头文件中声明
    // math.h
    double f1();  
    double f2(double); 
    再另外个main.cpp内,调用函数只需要把头文件包含即可
    // main.cpp
    #include "math.h"  
    main()  {  
        int number1 = f1();  
        int number2 = f2(number1);  
    }  
    
    

    include

    #include会将后面的文件内容包含到当前的文件中来,本身是没有任何其他作用的,所有是把每一个它出现的地方替换成它后面所以写的那个文件的内容
    main.cpp中的#include "math.h"在编译时候就会替换math.h文件,最终效果如下
    // main.cpp  
    double f1();  
    double f2(double);  
    main()  {  
        int number1 = f1();  
        int number2 = f2(number1);  
    } 
    
    联系邮箱:yang_s1r@163.com 博客园地址:https://www.cnblogs.com/Yang34/
  • 相关阅读:
    reset代码
    将博客搬至CSDN
    超简单的JNI——NDK开发教程
    浅谈Backbone的defaults
    为什么NaN !== NaN
    javascript小技巧[转]
    new function()随笔
    小记js中普通function和arrow function内this的使用区别
    evernote出现“Sync failed due to unexpected problem at server side”的问题
    强迫症和拖延症患者如何应对马桶4(遨游Maxthon)“上次未关闭页面”丢失的问题
  • 原文地址:https://www.cnblogs.com/Yang34/p/14322550.html
Copyright © 2011-2022 走看看