我试图在一个类中使用shiftreg.h和一个shiftreg.cpp(我以前在我的主文件中成功使用)并调用他的一个函数。可悲的是没有编译并给出错误:' shiftWrite'未在此范围内声明。我想我将每个头文件都包含在其他内容中,并且应该找到彼此。出了什么问题?
这是shiftreg.h:
#ifndef shiftreg_h
#define shiftreg_h
void shiftWrite(uint8_t data);
#endif
这个shiftreg.cpp:
#include "ShiftReg.h"
void shiftWrite(uint8_t data) {
do something;}
函数shiftWrite,我想在SegmentDisplay类的函数中使用,如下所示,使用SegmentDisplay.h
#ifndef SegmentDisplay_h
#define SegmentDisplay_h
#include <ShiftReg/shiftReg.h>
class SegmentDisplay{
public:
void pickNumber(int x);
};
#endif
SegmentDispplay.cpp:
#include "SegmentDisplay.h"
void SegmentDisplay::pickNumber(int x){
shiftWrite(ONE);}
这一切都始于Arduino软件:
#include "SegShift.h"
SegmentDisplay dsp();
int main(void){
while(1){
dsp.pickNumber(j);}}
答案 0 :(得分:0)
您似乎包含两个不同的文件:
在ShiftReg.cpp中,您可以:#include "ShiftReg.h"
在SegmentDisplay.h中,您执行#include <ShiftReg/shiftReg.h>
(顺便说一句,我只是在你的SegmentDisplay.cpp中包含shiftreg.h。)
答案 1 :(得分:0)
我已将ShiftReg.h和ShiftReg.cpp文件添加到SegmentDisplay文件的文件夹中并进行编译!我很高兴我也借助你的答案解决了这个问题。
但是,我想知道为什么我们在不同文件夹中时无法使用这些文件。有什么想法吗?
答案 2 :(得分:-1)
在SegmentDisplay.h中,您必须包含shiftreg.cpp而不是shiftreg.h
否则代码不会看到该功能