c26---文件包含include

//
//  main.c
//  文件包含

#include <stdio.h>

// 函数可以重复声明, 但不能重复定义
void test();
void test();
void test();
void test();


#include "zs.h"// 把zs.h文件全部拷贝多来,int sum(int v1, int v2);声明之后就可以用了。
// 重复导入会导致重复声明不会报错,但是会降低编译效率
//#include "ls.h"

/*
 #include <>
 <>会先去编译器环境下查找, 找不到再去系统的环境下查找,
 #include ""
 ""会先在当前文件查找, 找不到再去编译器环境下查找, 找不到再去系统的环境下查找,
 作用: 
 将""或者<>中的内容完全拷贝过来。
 
 注意:
 如果正确的编写.h文件,如果防止循环拷贝  A拷贝B, B拷贝A,间接拷贝问题  A拷贝B, B拷贝C, C拷贝D
 */
int main(int argc, const char * argv[]) {
    printf("sum = %i\n", sum(10, 20));
    
    printf("minus = %i\n", minus(10, 20));
    
    return 0;
}

void test()
{
    printf("0000000\n");
}
//
//  zs.h

// 为了放置重复include "zs.h"导入, 一般情况下会在.h中添加上 头文件卫士,防止头文件重复导入。
#ifndef __ZS__H__ 

/* __ZS__H__是随便写的,判断是否"没有"定义了名称叫做 __ZS__H__ 的宏,
没有定义就把 #define __ZS__H__     
int sum(int v1, int v2);   
#include "ls.h"  编译进去,
并且同时定义一个宏__ZS__H__和方法的声明。再次遇见include "zs.h"定义了__ZS__H__ 宏,#ifndef到#endif之间的内容都不会被编译进去
*/
#define __ZS__H__ // 定义一个叫做__ZS__H__的宏
int sum(int v1, int v2);
#include "ls.h"

#endif
//
//  zs.c
//  day10

#include "zs.h"
int sum(int v1, int v2)
{
    int res = minus(v1, v2) + v1;
    return res;
}
//
//  ls.h

int minus(int v1, int v2);
#include "zs.h"    //.h引入。.c里面自动就有, zs.h引入了ls.h,ls.h引入了zs.h,
int sum(int v1, int v2); 
//
//  ls.c

#include "ls.h"
int minus(int v1, int v2)
{
    int res = sum(v1, v2) - v2;
    return res;
}

 

posted @ 2017-08-21 13:44  无天666  阅读(230)  评论(0编辑  收藏  举报