C语言的#define和#if ,#else,#endif联合使用
本帖最后由 cnxh 于 2014-4-26 09:23 编辑设置指定寄存器的指定引脚置高
#define H_InOut_WriteBitH(Port,Pin) #if Port == 0\
//DDRA的第PIN脚置高\
#else\
//DDRB和其它的\
#endif\
如输入指令 H_InOut_WriteBitH(0,3),DDRA的pin3脚置高
但是宏定义不能通过,只要是 #define 宏定义替换中有#就会出错 编译指令不是这么用的~~~ Port 是个变量吧,你搞个变量编译器怎么预编译? c语言博大精深 应该是下面这个样子
#define H_InOut_WriteBitH(Port,Pin)
\if(Port == 0){
\ //DDRA的第PIN脚置高
\else{
\ //DDRB和其它的
\}
本意是H_InOut_WriteBitH(0,3), 涨开替换时是Port用0替换变成,
#if 0 == 0\
//DDRA的第PIN脚置高\
#else\
//DDRB和其它的\
#endif\
你这是变量,人家未仆先知? yinglively 发表于 2014-4-26 09:46
应该是下面这个样子
这样我知道,我原来就是这样的,调用函数,主要就是要刷新显示屏,调用函数太耗时,宏定义直接,端口设置 H_InOut_WriteBitH(0,3), PORT定义的是数字,不是变量名 宏是预处理, 预处理哎.......
C基础不过关..... 你这是用宏来定义宏。 好像是不行的,或者要其他很特殊的写法,什么多个#号之类的。应该用5楼的写法。 参考AVR系统带的头文件就很清楚怎么使用拉。 #if Port == 0
#define H_InOut_WriteBitH(Port,Pin) ....
#else
#define H_InOut_WriteBitH(Port,Pin) ...
#endif cnxh 发表于 2014-4-26 09:55
这样我知道,我原来就是这样的,调用函数,主要就是要刷新显示屏,调用函数太耗时,宏定义直接,端口设置 ...
#if
#else
#endif
是编译选项。在编译时二者只能选其一,无法在程序中使用。
页:
[1]