一、include
include 的作用是拷貝右邊的文件的所有內容到#include所在的位置,另外對於自定義的文件應用" "包含所引用的文件,即#include" " 對於系統自帶的文件用<>,即#include<>。例如:
#include<.stdio.h>是一個系統頭文件。
#include<abc.txt>相當於把abc.txt文件中的所用內容以純文本的方式拷貝到當前位置。
#include <stdio.h>
int main()
{
printf("哈哈哈\n");
//#include "haha/abc.txt"
#include "/Users/apple/Desktop/iOS課堂共享/0722課堂共享/0727/代碼/include/haha/abc.txt"
return 0;
}
解釋及注意事項
" "表示與.c文件處於同一路徑,可以使用相對路徑也可以使用絕對路徑。左邊有/的是絕對路徑,沒有/則爲相對路徑。
注意:自定義的文件使用" ",系統文件使用<>。
函數如果在調用時,函數定義在調用之後,且前面沒有進行相應的聲明,則編譯器報錯;
調用函數,沒有函數聲明,編譯器不會報錯,鏈接時報錯,不定義函數反而不報錯。
鏈接:把項目中所以相關的.o目標文件和c語言的函數庫合併在一起,生成可執行文件。
通常:
函數的定義放在.c文件中,函數的聲明放在.h文件中
如果要是有某個.c文件中定義的函數,只需要包含.c文件對應的.h文件即可
.h文件生下來就是打醬油被別人拿來拷貝包含的,編譯鏈接時不用寫出
二、多文件圖團隊開發
流程及定義:
首先定義一個李四.h文件,其保存函數的聲明
/*
李四
編寫函數的聲明
*/
int average(int a, int b);
int sum(int a, int b);
int minus(int a, int b);
int multiply(int a, int b);
然後定義李四.c文件,保存函數體
/*
李四
編寫基本算數運算的函數
*/
int average(int a, int b)
{
return (a + b)/2;
}
int sum(int a, int b)
{
return a + b;
}
int minus(int a, int b)
{
return a - b;
}
int multiply(int a, int b)
{
return a * b;
}
最後定義張三.c文件,保存主函數部分
#include <stdio.h>
#include "李四.h"
int main()
{
int score1 = 100;
int score2 = 70;
int c = average(score1, score2);
int d = sum(score1, score2);
printf("平均分是%d\n", c);
printf("總分是%d\n", d);
// \n 是一個轉義字符
// \t tab鍵
// \" 一個雙引號
// printf函數返回的字符串常量的字符數,並不是字數
// 1個漢字佔據3個字符
int e = printf("哈h\"\ta\n");
printf("e=%d\n", e);
return 0;
}
函數的定義放.c文件,函數的聲明放.h文件如果要使用某個.c文件中定義的函數,只需要#include這個.c文件對應的.h文件
.h文件的作用:被別人拷貝。編譯鏈接的時候不需要管.h文件
cc xx.o xxx.o 將多個目標文件鏈接在一起
cc xx.c xxx.c 將多個源文件編譯、鏈接
三、說明printf( )函數
main函數的返回值是返回給操作系統的,0爲正常退出,其他值爲非正常退出。用以進行系統日誌,其實它返回任何值對程序本身沒有影響,僅僅只是標記
Printf函數的返回值爲字符數。如printf(“abc”);則返回值爲3,若printf(“abc男\n”);的返回值爲7,因爲一箇中文佔3個字符