gpt4 book ai didi

c++ - 错误 : 'track_t' was not declared in this scope

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:54 25 4
gpt4 key购买 nike

我正在摆弄一个 Arduino 项目,我的主文件中有这些结构:

struct gpsCoord_t {
long latitude;
long longitude;
};

struct track_t {
char code[4];
gpsCoord_t bounds[4];
gpsCoord_t points[4];
};

接下来我有一个函数可以将这种类型的变量转储到同一个文件中的串行总线:

void dumpTrack(track_t track) {
Serial.print("\nTrack: ");
Serial.print(track.code);
Serial.print("\nTrack bounds: ");
Serial.print("\n- 1 lat: ");
Serial.print(track.bounds[0].latitude);
Serial.print("\n- 1 lon: ");
Serial.print(track.bounds[0].longitude);
}

编译器产生了 2 个没有行号的错误,我认为第一个错误是由第二个错误引起的:

error: variable or field 'dumpTrack' declared void
error: 'track_t' was not declared in this scope

编辑这里是完整的文件:

#include <Wire.h> //I2C library
#include <I2C_eeprom.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>

I2C_eeprom ee(0x50);

const int baseTrackAddress = 3;
const int trackSize = 68;
const int maxTracks = 480;

int powerOnLED = 2;
int gpsFixLED = 3;
int trackFoundLED = 4;
int errorLED = 6;
int gpsSensor = 7;

TinyGPS gps;
SoftwareSerial nss(gpsSensor, 255);

int calcTrackAddress(int trackId) {
return (trackId*trackSize) + baseTrackAddress;
}

struct gpsCoord_t {
long latitude;
long longitude;
};

struct track_t {
char code[4];
gpsCoord_t bounds[4];
gpsCoord_t points[4];
};

track_t tracks[maxTracks];

void setup()
{
Serial.begin(115200);
Serial.flush();
Serial.print("Demo I2C eeprom library ");
Serial.print(I2C_EEPROM_VERSION);
Serial.println("\n");

strcpy(tracks[0].code, "X11");
tracks[0].bounds[0].latitude = 0;
tracks[0].bounds[0].longitude = 0;

tracks[0].points[0].latitude = 0;
tracks[0].points[0].longitude = 0;

ee.writeBlock(3, (uint8_t*)&tracks[0], trackSize);
}

void loop()
{
Serial.println("\nTEST: 64 byte page boundary writeBlock");
dumpEEPROM(0, 255);
while(1);
}

void dumpTrack(track_t track) {
Serial.print("\nTrack: ");
Serial.print(track.code);
Serial.print("\nTrack bounds: ");
Serial.print("\n- 1 lat: ");
Serial.print(track.bounds[0].latitude);
Serial.print("\n- 1 lon: ");
Serial.print(track.bounds[0].longitude);
}

void readTrack(int trackId) {
track_t track;
ee.readBlock(60, (uint8_t*)&track, 10);
}

void readTracks() {

}

void dumpEEPROM(unsigned int addr, unsigned int length)
{
// block to 10
addr = addr / 10 * 10;
length = (length + 9)/10 * 10;

byte b = ee.readByte(addr);
for (int i = 0; i < length; i++)
{
if (addr % 10 == 0)
{
Serial.println();
Serial.print(addr);
Serial.print(":\t");
}
Serial.print(b);
b = ee.readByte(++addr);
Serial.print(" ");
}
Serial.println();
}

void ProcessCommand(char* command) {
//switch(*command==)
}

char* ReadSerialCommand() {
int i=0;
char commandbuffer[100];

if(Serial.available()){
delay(100);
while( Serial.available() && i< 99) {
commandbuffer[i++] = Serial.read();
}
commandbuffer[i++]='\0';
}

if(i>0)
return (char*)commandbuffer;
else
return 0L;
}

当我将整个 dumpTrack 函数放在注释中时,错误就消失了。我检查了几次是否有错别字,但都没有找到。

最佳答案

看来您正在将此代码编译为 C。

代替

struct track_t {
char code[4];
gpsCoord_t bounds[4];
gpsCoord_t points[4];
};

typedef struct {
char code[4];
gpsCoord_t bounds[4];
gpsCoord_t points[4];
} track_t;

关于c++ - 错误 : 'track_t' was not declared in this scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com