美文网首页十天学会C语言程序员
C语言day10-09文件包含-注意点

C语言day10-09文件包含-注意点

作者: liyuhong165 | 来源:发表于2016-05-08 22:58 被阅读62次

    pragma mark 文件包含-注意点

    pragma mark 概念

    /**
     1. 如何正确的编写.h文件
     #ifndef __ZH__H__   // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏  // 如果满足 会把下面的东西全部编译到文件去
     #define __ZH__H__   // 定义一个叫做 __ZH__H__ 的宏
     
     // 加法运算
     // v1, v2需要参与运算的数据
     int sum(int v1, int v2);
     
     #endif
     
     2. 如何防止循环拷贝 A拷贝B,B拷贝A
     循环拷贝出现 #include nested too deeply 嵌套太深 (重复导入) 
     张三包含李四 李四包含张三 (一双筷子 你拿一个我拿一个 谁都用不了)    
     
     解决办法 单方导入
     
     3.间接拷贝问题   A拷贝B , B拷贝C , C拷贝
     
     */
    

    pragma mark 代码

    main.c

    #include <stdio.h>
    #include "zs.h" // int sum(int v1, int v2);
    #ifndef __ZH__H__   // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏  // 如果满足 会把下面的东西全部编译到文件去
    #define __ZH__H__   // 定义一个叫做 __ZH__H__ 的宏
    
    // 加法运算
    // v1, v2需要参与运算的数据
    int sum(int v1, int v2);
    
    #endif
    
    // 函数可以重复声明,不可以重复定义
    //void test();
    //void test();
    //void test();
    //void test();
    
    //#include "zs.h" // int sum(int v1, int v2);
    #pragma mark 下面的代码 因为上面已经定义过了 所以下面的代码 全部都不会加入到编译文件里面
    #ifndef __ZH__H__   // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏  // 如果满足 会把下面的东西全部编译到文件去
    #define __ZH__H__   // 定义一个叫做 __ZH__H__ 的宏
    
    // 加法运算
    // v1, v2需要参与运算的数据
    int sum(int v1, int v2);
    
    #endif
    
    // 重复导入会降低编译效率
    //#include "ls.h" 
    
    /**
     #include <>
     <> 会先去编译器环境下查找,找不到再去系统的环境下查找
     
     #include ""
     "" 会先在当前文件查找,找不到再去编译器环境下查找,找不到再去系统的环境下查找
     
     作用:
     将""或者<>中的内容完全拷贝过来
     
     注意:
     如何正确的编写.h文件
     如何防止循环拷贝
     间接拷贝问题
     ru
     */
    int main()
    {
        printf("sum = %i\n",sum(10, 20));
        printf("minus = %i\n",minus(10, 20));
        
        return 0;
    }
    
    void test()
    {
        printf("000000\n");
    }
    
    

    zs.h

    //// 为了防止重复导入,一般情况下会在.h中添加上,头文件卫士(防止文件重复定义)
    //
    //#ifndef __ZH__H__   // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏  // 如果满足 会把下面的东西全部编译到文件去
    //#define __ZH__H__   // 定义一个叫做 __ZH__H__ 的宏
    
    // 加法运算
    // v1, v2需要参与运算的数据
    int sum(int v1, int v2);
    
    #include "ls.h" // // #include nested too deeply 嵌套太深 (重复导入) 解决办法 单方导入
    //#endif
    

    zs.c

    #include "zs.h"
    
    int sum(int v1, int v2)
    {
        // 先用 v1 - v2 然后再加上 v1
        int res = minus(v1,v2) + v1;
        return res;
    //    return v1 + v2;
    }
    

    ls.h

    #include "ls.h"
    
    int minus(int v1,int v2)
    {
        
        // 先将两个数相加,然后再减去v2
        int res = sum(v1,v2) - v2;
        return res;
    //    return v1 - v2;
    }
    

    ls.c

    // 减法运算
    // v1,v2 是需要参与运算的数据
    int minus(int v1,int v2);
    
    //#include "zs.h"
    

    相关文章

      网友评论

        本文标题:C语言day10-09文件包含-注意点

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