标题: C语言能否根据需要临时改变宏定义的内容? [打印本页]
作者: lmn2005 时间: 2021-8-23 10:20
标题: C语言能否根据需要临时改变宏定义的内容?
有关宏定义的语法,本人是小白,不知道能否实现下面的功能:根据需要来临时改变宏定义的具体内容(引脚定义、#include等),模拟内容如下:
unsigned char X=1;//选择1或2
#if X=1// 如果X=1,就执行下面宏定义
sbit K1=P3^3;
sbit K2=P3^4;
#define Pout P3 #include <1.h>
#elif X=2// 如果X=2,就执行下面宏定义
sbit K1=P3^1;
sbit K2=P3^2;
#define Pout P1
#include <2.h>
#endif
请高手们不吝赐教,谢谢!
作者: dzbj 时间: 2021-8-23 11:05
这样写是可以 但只能在编译前选择 编译后就固定了 不能在运行中再变化 而编译前用 就没必要用变量做1或2定义 直接defin=1or2就行 编译器会自己去看
作者: 黄youhui 时间: 2021-8-23 11:21
我知道你想表达啥,但是很遗憾,不能。这写涉及到预处理问题,软件在编译过程中就必须要决定的东西是不能够临时改变的。把你要切换的1.h和2.h文件比作两种背包一种是装食物的食物包,一种是装衣服的衣服包,你一定要在出门前(编译前)决定用哪一种包,可以是一个包装2种东西,也可以带两种包,但是出门后食物包不能变成衣服包。
作者: sapoiuyt1 时间: 2021-8-23 11:35
不行,宏定义是属于编译前就进行代码字符串替换的。 不属于编译后的工作
作者: huashanhui20 时间: 2021-8-23 12:22
为什么不自己亲自试一下呢?
作者: lmn2005 时间: 2021-8-23 14:13
已经测试成功,就用你的这个方法,谢谢!
作者: Hephaestus 时间: 2021-8-23 19:23
第一句就是错的
unsigned char X=1;
必须写成:
#define X 1
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |