c26---檔案包含include

weixin_34119545發表於2017-08-21
//
//  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;
}

 

相關文章