C工程的云南白药#define xxx_EXT

参考:http://www.cnblogs.com/alongwaytogo/p/5111516.html

头文件:

#ifndef __OS_HELP_H__
#define __OS_HELP_H__

#ifdef  xxx_GLOBALS   //如果定义了 xxx_GLOBALS
#define xxx_EXT       //那么xxx_EXT就被定义为 空 
#else
#define xxx_EXT extern//否则磝xx_EXT就被定义为 extern
#endif 

typedef unsigned char      u8;
typedef unsigned short int u16;
typedef unsigned int       u32;
xxx_EXT u8 Ble_Flag_Bps;
xxx_EXT u8 Ble_Flag_rename;  //不能写Ble_Flag_rename=1;因为声明可以多次,定义只能一次。
xxx_EXT u8 Ble_Flag_Iotime;
xxx_EXT u8 Ble_Flag_Connet;
xxx_EXT u8 Ble_Flag_Power;


xxx_EXT union 
{
    struct 
    {
      u8    rename:1; 
      u8    Iotime:1;
      u8    Bps:1;
      u8    Connet:1;
        
      u8    Power:1;
    }Flag;
    u8 FlagAll;
} BleFun;

xxx_EXT void delay_ms(u32 nCount);
typedef u16 (*FUNC) (void)  ;//1--抽象函数  作为回调函数
xxx_EXT u32 ADC_Average(FUNC func);//2--实现函数 作为调用函数


#endif

C文件:

#define xxx_GLOBALS  //自己的模块。c定义下!!!
#include "OS_Help.h"
#include"math.h"



void delay_ms(u32 nCount)
{
	for(;nCount!=0;nCount--);
}

 
 

做一个简单的模块,大家都可以用。只有他的.C是有#define xxx_GLOBALS的,那样的话他就是与众不同了。

他的头文件的xxx_EXT相当于空,而别人的相当于extern。


发现意外工程里面的,globals.h跟我的思路一样,它给bus用了


#ifdef GLOBALS 
#define EXT
#else
#define EXT extern 
#endif

 
EXT unsigned char TxBuffer1[400]; 
 
EXT unsigned char TxBuffer2[]; 
EXT unsigned char RxBuffer1[400];
EXT unsigned char RxBuffer2[];
EXT unsigned char TxCounter1;
EXT unsigned int TxCounter2;
EXT volatile unsigned int RxCounter1; 
EXT volatile unsigned int RxCounter2;


猜你喜欢

转载自blog.csdn.net/weixin_42381351/article/details/80654789
ext
xxx