美文网首页
C语言教程(007)-认识第一个C语言程序(下·include的

C语言教程(007)-认识第一个C语言程序(下·include的

作者: 爱学习的老周 | 来源:发表于2019-09-15 20:48 被阅读0次

    3、include

    在我们写的第一段代码中,我们使用了一个函数printf(),为什么我们看不到这个函数的函数体呢?函数体不在那段代码里,那么编译器是怎么找到它的呢?

    我们不知道printf()是怎么实现的,但是知道它的函数体在一个文件里,文件名称是stdio.h,是C语言标准库中的标准输入输出库,它提供键盘输入和屏幕输出的支持。第一行的代码#include<stdio.h>就起到把文件stdio.h内的代码粘贴到当前代码中的作用。头文件的.h中的hheader的缩写。

    我们做几个测试,以了解#include的基本功能

    测试1:

    //创建源文件myTest01.c
    #include"myHeader.h"//包含头文件
    int main(void)
    {
        headerTest();//调用函数
        return 0;
    }
    
    //创建头文件myHeader.h
    #include<stdio.h>
    void headerTest()
    {
        printf("helloworld");
    }
    

    调试结果:helloworld

    测试2

    //创建头文件myHeader01.h
    printf("I am header01\n");
    
    //创建头文件myHeader02.h
    printf("I am header02");
    
    //创建源文件myTest02.c
    #include<stdio.h>
    int main(void)
    {
        #include"myHeader01.h";
        #include"myHeader02.h";
        return 0;
    }
    

    调试结果:

    I am header01
    I am header02
    

    测试3

    //创建头文件myHeader01.abc
    printf("I am header01\n");
    
    //创建头文件myHeader02.abc
    printf("I am header02");
    
    //创建源文件myTest02.c
    #include<stdio.h>
    int main(void)
    {
        #include"myHeader01.abc";
        #include"myHeader02.abc";
        return 0;
    }
    

    调试结果:

    I am header01
    I am header02
    

    结论:

    测试1和测试2说明了#include的本质相当于粘贴操作,将指定的文件里的内容粘贴到当前文件的当前行中。测试3说明了,对于任意格式(后缀)的文件,只要内容没错,就都是有效的。多个文件可以进行多重包含,这是一个相当灵活的功能。

    你可能发现了,我们包含头文件用了两种符号< >“ ”,这两者的区别在于,使用尖括号< >,编译器会到系统路径下查找头文件;而使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。所以我们完全可以使用双引号“ ”来包含标准头文件,但不建议,我们建议用尖括号< >引用标准头文件,用双引号“ ”引用自定义头文件。

    为什么C语言不内置输入和输出?因为并非所有的程序都要用到输入输出功能,轻装上阵体现了C语言的哲学,正式这种经济使用资源的原则,使得C语言成为流行的嵌入式编程语言。

    #开头的,叫做预处理命令。关于预处理命令的更多用法,将来会细讲。

    4、总结

    • 除非是插在函数体中的语句,预编译命令通常都写在首部。事实上只要写在主函数体之外都是可以的,但是最好养成良好规范的习惯。
    • 函数体所有代码必须包含在大括号{ }之内。
    • 不论是变量的声明,赋值,还是函数的调用,都是一条语句,语句均以分号;结尾。同一条语句最好单独占一行。
    • 不同关键字/标识符之间以空格隔开,也可以用回车分开,但是不便于阅读。同一关键字/标识符不可分开。

    例如:

    int 
            main(void)
    {
        //函数体
    }
    

    这样在语法上也是对的,但不建议。

    • 注释:注释是对代码的解释,注释不参与编译,只是为了便于阅读。养成写注释的习惯,对写复杂的代码有好处。注释的格式如下:
    //注释内容
    /*
    注释内容
    注释内容
    注释内容
    */
    

    相关文章

      网友评论

          本文标题:C语言教程(007)-认识第一个C语言程序(下·include的

          本文链接:https://www.haomeiwen.com/subject/syutuctx.html