gpt4 book ai didi

c++ - 包含函数的 C 宏

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:16 29 4
gpt4 key购买 nike

我想根据#define 的值运行特定代码。为了澄清我的情况,我在下面发布了一些代码。现在,例如 #define VALUE 0 完成了。这可以是任何数字。如果该值等于 0,则第一个 for 循环应该运行,否则不应该运行。我以前使用过 #ifdef VALUE,但是 VALUE 总是被定义的,我需要检查它的实际值。是否可以使用宏来加速代码?

#define VALUE 0
void hardwareDIO::readDI(){
for(int i = 0; i < 7; i++){
for(byte ii = 0; ii < 8; ii++){
if(bitRead(_DIDirect[i], ii)){
bitWrite(_hwStatDir[i], ii, !digitalRead(8*i+ii));
}
}
}

for(int i = 0; i < 8; i++){
if(_extenderNrs[i] == -1){
break;
}else{
for(byte ii = 0; ii < 2; ii++){
byte values = 0;
if(ii == 0){
values = expanderRead(_extenderNrs[i], GPIOA);
}else{
values = expanderRead(_extenderNrs[i], GPIOB);
}
for(byte iii = 0; iii < 8; iii++){
if(bitRead(_arrayIO[i][ii], iii)){ // input detected
bitWrite(_hwStatIO[i][ii], iii, !bitRead(values, iii));
}
}
}
}
}
}

最佳答案

你应该使用

#if VALUE==1
....
#endif

而不是

#ifdef VALUE

语法从这里应该很明显 - 选择任何值(甚至零)来编译该代码块。

关于c++ - 包含函数的 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985224/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com