我很抱歉不得不问这个,但我很难过。我想这只是对C / C ++如何包含工作的简单误解。这是我在主文件中的内容:
#include "application.h"
#include "flashHelper.h"
#include <ePaper.h>
...
void setup()
{
SparkFlash_loadImage(image_270, sizeof(image_270), 0);
...
EPAPER.image_flash();
}
我最近将一些函数移到了flashHelper.cpp和flashHelper.h
中flashHelper.h
#ifndef FLASHHELPER_H
#define FLASHHELPER_H
int SparkFlash_read(int address);
int SparkFlash_write(int address, uint16_t value);
void SparkFlash_erase(int address, int bytesToErase);
bool SparkFlash_writeB(const uint8_t* buffer, int numByteToWrite, int extFlashOffset);
bool SparkFlash_checkB(const uint8_t* buffer, int numByteToCheck, int extFlashOffset);
bool SparkFlash_loadImage(const uint8_t* buffer, int bufferSize, int flashOffset);
#endif /* FLASHHELPER_H */
显然flashHelper.cpp定义了实际的函数:
#include "flashHelper.h"
bool SparkFlash_loadImage(const uint8_t* buffer, int bufferSize, int flashOffset)
{
...
}
bool SparkFlash_checkB(const uint8_t* buffer, int numByteToCheck, int extFlashOffset)
{
...
}
bool SparkFlash_writeB(const uint8_t* buffer, int numByteToWrite, volatile int extFlashOffset)
{
...
}
void SparkFlash_erase(int address, int bytesToErase)
{
...
}
int SparkFlash_read(int address)
{
...
}
int SparkFlash_write(int address, uint16_t value)
{
...
}
当我编译时,我得到以下错误:../applications/e-paper/EPD.cpp:751:71: error: 'SparkFlash_read' was not declared in this scope
对我来说,这意味着EPAPER.image_flash()调用的函数不能访问/看到flashHelper.h中包含的函数。知道为什么吗?当我将flashHelper.h定义添加到application.h然后将实际函数添加到我的主文件(application.cpp)时,它编译时没有任何抗议。
对于那些感兴趣的人。导致错误的函数/ line / call看起来像:
void EPD_Class::line(uint16_t line, int extFlashAddress, uint8_t fixed_value, bool read_progmem, EPD_stage stage)
{
...
extFlashData = SparkFlash_read(extFlashAddress + i - 1);
...
}
答案 0 :(得分:1)
在EPD.cpp
的顶部,添加以下行:
#include "flashHelper.h"