在 SIWARESCANNER_H 中

#ifndef SIWARESCANNER_H
#define SIWARESCANNER_H

#include "nirsensor.h"
#include <QObject>
#include <QTimer>
extern "C"{
#include "Operations.h"
#include "utils.h"
#include "spiDriver.h"
#include "ioDriver.h"
#include "CRC.h"
}
#endif

此处的extern “C” 中的内容 会被多次编译

将它放到cpp中,错误消失

但是明显存在不合理,为什么#ifndef无法阻止多次编译???