以往寫C語言程序都是一個文件里面寫個幾十、幾百行,在練算法的時候還可以,現在搞開發需要模塊化編程,所謂模塊化編程,就是指一個程序包含多個源文件(.c 文件和 .h 文件),每個 .c 文件可以被稱為一個模塊。
1、例程的文件結構
2、各文件代碼main.c 源碼:
#include
{
intn1 = 1, n2 = 10;
printf("從%d加到%d的和為%ld\n", n1, n2, sum(n1, n2));
printf("從%d乘到%d的積為%ld\n", n1, n2, mult(n1, n2));
printf("OS:%s\n",OS);
printf("Power By %s(%s)", getWebName(), getWebURL());
return0;
}
math.c 源碼:
// 沒有使用到 func.h 中的函數聲明或宏定義,也可以不包含進來
#include "../include/func.h"
// 從 fromNum 加到 endNumlongsum(intfromNum, intendNum)
{
inti;
longresult = 0;
// 參數不符合規則,返回 -1
if(fromNum<0?|| endNum<0?|| endNum
{
return-1;
}
for(i=fromNum; i<=endNum; i++)
{
result += i;
}
// 返回大于等于0的值
returnresult;
}
// 從 fromNum 乘到 endNumlongmult(intfromNum, intendNum)
{
inti;
longresult = 1;
// 參數不符合規則,返回 -1
if(fromNum<0?|| endNum<0?|| endNum
{
return-1;
}
for(i=fromNum; i<=endNum; i++)
{
result *= i;
}
// 返回大于等于0的值
returnresult;
}
web.c 源碼:
// 使用到了 func.h 中的宏定義,必須包含進來,否則編譯錯誤
#include "../include/func.h"char* getWebName()
{
returnWEB_NAME;
}char* getWebURL()
{
returnWEB_URL;
}
func.h 源碼:
#ifndef _FUNC_H
#define _FUNC_H
// 用宏定義來代替全局變量
#define OS "Linux"
#define WEB_URL "http://www.baidu.com"
#define WEB_NAME "百度"
// 也可以省略 extern,不過為了程序可讀性,建議都寫上
externlongsum(int, int);
externlongmult(int, int);
externchar* getWebName();
externchar* getWebURL();
#endif
運行結果:
從1加到10的和為55從1乘到10的積為3628800OS:Linux
-
C語言
+關注
關注
180文章
7614瀏覽量
137739 -
源文件
+關注
關注
0文章
30瀏覽量
4612
原文標題:通俗易懂!Linux C模塊化編程實例講解
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
AWTK-WEB 快速入門(1) - C 語言應用程序
![AWTK-WEB 快速入門(1) - <b class='flag-5'>C</b> <b class='flag-5'>語言</b>應用<b class='flag-5'>程序</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
技術干貨驛站 ▏深入理解C語言:掌握C語言條件判斷,從if到switch的應用
![技術干貨驛站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b>條件判斷,從if到switch的應用](https://file1.elecfans.com/web2/M00/FC/CD/wKgZomaWI5uASgBaAABuQHdMO4I302.png)
單片機hex文件反編譯成C語言的過程
hex文件怎么能轉回去c語言
C語言結構體史上最詳細的講解【軟件干貨】
C語言中的頭文件
支持CiA402驅動器配置文件的示例程序用于通過EtherCAT?通信進行電機控制
![支持CiA402驅動器配置<b class='flag-5'>文件</b>的示<b class='flag-5'>例程序</b>用于通過EtherCAT?通信進行電機控制](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論