keil 工程头文件包涵及结构体重定义问题

最近在写一个太阳能电池控制板的项目,这两天真是收获颇丰,把指针又从新学了一遍,还是项目坑死人啊啊啊啊啊

下面是我在建立工程时遇到的问题:

1)头文件包涵问题:

原先写的程序都是小程序,很少遇到许多.c 和.h和在一起的进行编译的境况,这样在许多编译单位一起链接的时候就会出现重定义情况

解决办法:

 独立建立一个include.h 文件,将所有其他文件的.h 都包涵在内,例如:

#ifndef INCLUDE_H_
#define INCLUDE_H_

#include "config.h"		//前后两个位置不能变
#include "STC15Fxxxx.H"	 
#include "intrins.h"   

#ifdef _ADC
#include "ADC.h"
#endif

#ifdef _DELAY
#include "delay.h"
#endif	  

#ifdef  _EEPROM
#include "EEPROM.h"
#endif		 

#ifdef __EXTI 
#include "Exti.h"
#endif			

#ifdef  _GPIO 
#include "GPIO.h"
#endif			  

#ifdef _PCA
#include "PCA.h"
#endif			  
   
...... //还有许多

#endif
这样在每个编译单位(独立可以编译的.h和.c)的开头加上include.h 


注意: 由于在每个头文件包涵之前加入的是#ifdef 和#endif  如下:

#ifdef  _XXXXX //标示符
#include xxxxx//头文件名
#endif		
所以要提前进行宏定义 (#define )

 

我是在config.h配置文件中进行宏定义的

#ifndef		__CONFIG_H
#define		__CONFIG_H 
/*********************************************************/

#define MAIN_Fosc		22118400L	//定义主时钟
//#define MAIN_Fosc		12000000L	//定义主时钟
//#define MAIN_Fosc		11059200L	//定义主时钟
//#define MAIN_Fosc		 5529600L	//定义主时钟
//#define MAIN_Fosc		24000000L	//定义主时钟

/*********************************************************/
#define _ADC

#define _DELAY

#define  _EEPROM

#define __EXTI 

#define  _GPIO 

#define _PCA

#define _SOFT_UART 

#define _TIMER 

#define _USART

#define _BSP_LCD

#define _BSP_KEY

    .......
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值