首页 > 解决方案 > 尽管 if 子句为假,但为什么会引发错误?

问题描述

为什么在这段代码中抛出错误?

对象属性具有以下值(由方法输出addGroup()):

####### ADDGROUP ######                                                                                                                                                                            
isBasic: 0                                                                                                                                                                                         
types[0]: Z                                                                                                                                                                                        
####### ADDGROUP ###### 

因此,由于isBasic是 false 和types[0]= Z(如上面的输出所示),因此在我的理解中不应抛出错误:

void addGroup(int newGroup) {
    cout<<"####### ADDGROUP ######"<<endl;
    cout<<"isBasic: ";
    cout<<isBasic<<endl;

    cout<<"types[0]: ";
    cout<<types[0]<<endl;
    cout<<"####### ADDGROUP ######"<<endl;

  if(isBasic == true && types[0] != 'Z') {
    #error "Sensor defined as basicComponent, type(s) already set. Basic component is either group- OR type-specific but never both!"
  }

  for (int i=0; i < 3; i++){
    if(groups[i] == 99) {
      groups[i] = newGroup;
    break;
    }
  }
}

标签: c++c-preprocessor

解决方案


#error是一个预处理器指令。该错误将始终被处理,除非它被#if或类似的预处理器指令删除。

预处理发生在编译之前。运行时条件不会影响它。


推荐阅读