c语⾔多⽂件夹⼯程,⼀个⼯程⾥如何包含多个.c⽂件和多个.h
⽂件,然后让它能顺利编译通过...
俺⼿头这个项⽬是42个C⽂件,50个h⽂件,呵呵,全部是俺⼀个⼈写的。
要想多个⽂件链接好,⾸先你⾃⼰的⽂件组织结构要好,⾄少便于你⾃⼰搜索东西,⽂件命名也要有⼀定的规律。
⼀个C⽂件⼀定对应⼀个H⽂件,H⽂件主要作⽤是⼀个窗⼝作⽤,告诉别⼈你可以⽤我的哪些东西,别的⽂件想调⽤,包含它的H⽂件就可以了,然后你⼀股脑把那些C⽂件添加进去就OK了。注意extern和static这两个关键字。
⼤家不妨看看我随便从我项⽬中抓出的⼀个H⽂件:
DrvTimer0.h:
#ifndef _DRVTIMER0_H_
#define _DRVTIMER0_H_
#ifdef  _DRVTIMER0_C_
#define EXTERN
#else
#define EXTERN  extern
#endif
#define TIMER0_PRE_FREQ0    0                                  // T/C Stop
#define TIMER0_PRE_FREQ1    BIT(CS00)                          // CLK / 1
#define TIMER0_PRE_FREQ2    BIT(CS01)                          // CLK / 8
#define TIMER0_PRE_FREQ3    (BIT(CS01) | BIT(CS00))            // CLK / 32
#define TIMER0_PRE_FREQ4    BIT(CS02)                          // CLK / 64
#define TIMER0_PRE_FREQ5    (BIT(CS02) | BIT(CS00))            // CLK / 128
#define TIMER0_PRE_FREQ6    (BIT(CS02) | BIT(CS01))            // CLK / 256
#define TIMER0_PRE_FREQ7    (BIT(CS02) | BIT(CS01) | BIT(CS00)) // CLK / 1024
#define TIMER0_PRE_CLK0    0
#define TIMER0_PRE_CLK1    1
#define TIMER0_PRE_CLK2    8
#define TIMER0_PRE_CLK3    32
#define TIMER0_PRE_CLK4    64
#define TIMER0_PRE_CLK5    128
#define TIMER0_PRE_CLK6    256
#define TIMER0_PRE_CLK7    1024
#if    (FOSC == 1000000)
#define TIMER0_PRE_FREQ    TIMER0_PRE_FREQ5
#define TIMER0_PRE_CLK      TIMER0_PRE_CLK5
#elif  (FOSC == 8000000)
#define TIMER0_PRE_FREQ    TIMER0_PRE_FREQ7
#define TIMER0_PRE_CLK      TIMER0_PRE_CLK7
#endif
#if  0
#define TIMER0_FREQ        (double)((double)FOSC / TIMER0_PRE_CLK)
#define TIMER0_CNT          (double)(1 / TIMER0_FREQ)
#define TIMER0_COUNT(ms)    (double)(((double)ms / 1000)/ TIMER0_CNT)
#define SET_TIMEO_TCNT(ms)  (BYTE)(256 - (TIMER0_COUNT(ms) + 0.5))
#else
settimer头文件
#define SET_TIMEO_TCNT(ms)  (BYTE)(256 - (BYTE)(((double)ms * FOSC) / (TIMER0_PRE_CLK * 1000) + 0.5)) #endif
#define PAR_SYS_CLK        0
#define PAR_PAN_CLK        1
#define PAR_TIL_CLK        2
#define PAR_CAM_CLK        3
#define PAR_KEY_CLK        4
#define PAR_MAX_CLK        5
#define APP_STAT_CLK        0
#define APP_CAM_CLK        1
#define APP_CAM_SRV_CLK    2
#define APP_MAX_CLK        3
EXTERN void vSetTimer0(BYTE bVal);
EXTERN void vStartTimer0(BYTE bTimerPreFreq);
EXTERN void vStopTimer0(void);
EXTERN void vSetParClk(BYTE bClkId, BYTE bClk);
EXTERN BYTE bGetParClk(BYTE bClkId);
EXTERN void vSetAppClk(BYTE bClkId, WORD wClk);
EXTERN BOOL fgGetAppClk(WORD *pwClk, BYTE bClkId);
EXTERN BOOL fgTimer0Wizard(void);
EXTERN void vInitTimer0(void);
#undef  EXTERN
#endif
关于系统架构,⼤家可以参考我另外⼀个⼩松⼯程下的回帖。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。