我可能错过了一些愚蠢的事情,但是现在有一天我不断收到此错误:(。请帮助!。这是我在C ++中的第一个库,因此我可能搞砸了语法。
此错误出现在此代码行中
displayLED(int heightOfDisplay = 8, int widthOfDisplay = 32);
这是.h文件中的代码
#ifndef displayLED
#define displayLED
#include "Arduino.h"
#include <math.h>
#include <string.h>
class displayLED
{
private:
static const int heightOfDisplay;
static const int widthOfDisplay;
int verticalArray[8];
int horizontalArray[32];
int cursorPosition=0;
const int latchPin = 8;
const int clkPin = 7;
const int REDhorizontalSO = 6;
const int GREENhorizontalSO = 11;
const int BLUEhorizontalSO = 9;
const int verticalSO = 12;
public:
displayLED(int heightOfDisplay = 8, int widthOfDisplay = 32);
displayLED();
void constructWord(String Word = "WELCOME");
void slideIn(String colorAnimator);
void fillArrays();
void pushToRegister(int sthToWrite1[], int sthToWrite2[], int sthToWrite3[], int sthToWrite4[], int SOpin1, int SOpin2, int SOpin3, int SOpin4);
void shiftOutMultiple(uint8_t dataPin1, uint8_t dataPin2, uint8_t dataPin3, uint8_t dataPin4, uint8_t clockPin, uint8_t bitOrder, uint8_t val1, uint8_t val2, uint8_t val3, uint8_t val4)
};
#endif
这是我的.cpp。为了简洁起见,我省略了其他功能。我希望清楚。
#include "displayLED.h"
displayLED::displayLED(int heightOfDisplay, int widthOfDisplay) {
this->heightOfDisplay = heightOfDisplay;
this->widthOfDisplay = widthOfDisplay;
pinMode(latchPin , OUTPUT);
pinMode(clkPin , OUTPUT);
pinMode(REDhorizontalISO , OUTPUT);
pinMode(GREENhorizontalSO , OUTPUT);
pinMode(BLUEhorizontalSO , OUTPUT);
pinMode(vertcalISO , OUTPUT);
fillArrays();
}
displayLED::displayLED() {
}
//this function fills all the array with zeros
void displayLED::fillArrays() {
for(int j=0; j <= heightOfDisplay; j++) {
verticalArray[j] = 0;
}
for(int j=0; j <= widthOfDisplay; j++) {
horizontalArray[j] = 1;
}
}
答案 0 :(得分:3)
我认为您的#define
后卫与您的班级名称冲突。预处理器将删除所有对displayLed
的提及,这会产生非常奇怪的编译错误。
将您的警卫更改为类似
#ifndef DISPLAYLED_H
#define DISPLAYLED_H
或者,您可以尝试使用#pragma once
。如今,大多数编译器都支持它。