Ошибки в скомпилированной программе
Я использую IDE версии 1.18.13 (пробовал 2.0x, но пришлось вернуться). Плата XIAO ESP32C3. Скетч содержит 2 файла - stepperDriver.ino и stepper.h.
При компиляции я получил два сообщения об ошибках: C:\Users\USER\AppData\Local\Temp\arduino_build_714606\sketch\Stepper.h.cpp:1:1: ошибка: заблудший '##' в программе
C:\Users\USER\AppData\Local\Temp\arduino_build_714606\sketch\Stepper.h.cpp:1:3: ошибка: 'строка' не указывает тип; вы имели в виду 'int'?
При проверке указанного файла я заметил, что первая строка действительно нетипична: ##line 14 "E:\Current\ESP32 SW\StepperDriver\stepperDriver.ino"
Как я могу это решить?
С уважением
Редактировать: после некоторых комментариев я добавляю уменьшенные файлы, которые все еще содержат ошибки. Они копируются из IDE с помощью элемента управления A, C и V. INO-файл:
#include <Arduino.h>
#include "Stepper.h"
StepperD stepper[STEPPERS_COUNT];
#define interLoopsInterval 4
String commandLine;
/*********************************************************/
void setup(){}
/*********************************************************/
void loop()
{
}
Степпер.H:
#ifndef ModStepper_h
#define ModStepper_h
#include <Arduino.h>
class StepperD
{
public:
StepperD() {isAttached = false;} // Конструктор
String stepperParser (String inCommand); // Обработка системных команд
bool begin(uint8_t ch); // Определяем контакты GPIO и значения по умолчанию
volatile uint32_t step_delay;
private:
void GoOneStep();
// логические значения конфигурации (String CommandLine, uint16_t &var);
bool writeToGpioExpander (uint8_t dataB);
bool writeToGpioExpander (uint8_t bitInReg, uint8_t level);
};
/*******************************************/
bool StepperD::begin(uint8_t ch)
{
return ch == 0;
}
/*******************************************/
bool StepperD::writeToGpioExpander (uint8_t dataB)
{
return dataB == 0;
}
bool StepperD::writeToGpioExpander (uint8_t bitInReg, uint8_t level)
{
}
/*******************************************/
String StepperD::stepperParser (String commandLine)
{
return commandLine;
}
/******************* Not TMC2209 *********************************/
void StepperD::GoOneStep()
{
}
/*******************************************/
bool StepperD::StartMotion(int way)
{
return (way);
}
#endif // ModStepper_h
Изменить 2: Stepper.h.cpp
##line 9 "E:\\Current\\ESP32 SW\\StepperDriver\\stepperDriver.ino"
void setup();
#line 11 "E:\\Current\\ESP32 SW\\StepperDriver\\stepperDriver.ino"
void loop();
#line 0 "E:\\Current\\ESP32 SW\\StepperDriver\\stepperDriver.ino"
line 1 "E:\\Current\\ESP32 SW\\StepperDriver\\Stepper.h"
#ifndef ModStepper_h
#define ModStepper_h
#include <Arduino.h>
class StepperD
{
public:
StepperD() {isAttached = false;} // Конструктор
String stepperParser (String inCommand); // Обработка системных команд
bool begin(uint8_t ch); // Определяем контакты GPIO и значения по умолчанию
volatile uint32_t step_delay;
private:
void GoOneStep();
// логические значения конфигурации (String CommandLine, uint16_t &var);
bool writeToGpioExpander (uint8_t dataB);
bool writeToGpioExpander (uint8_t bitInReg, uint8_t level);
};
/*******************************************/
bool StepperD::begin(uint8_t ch)
{
return ch == 0;
}
/*******************************************/
bool StepperD::writeToGpioExpander (uint8_t dataB)
{
return dataB == 0;
}
bool StepperD::writeToGpioExpander (uint8_t bitInReg, uint8_t level)
{
}
/*******************************************/
String StepperD::stepperParser (String commandLine)
{
return commandLine;
}
/******************* Not TMC2209 *********************************/
void StepperD::GoOneStep()
{
}
/*******************************************/
bool StepperD::StartMotion(int way)
{
return (way);
}
#endif // ModStepper_h
#line 1 "E:\\Current\\ESP32 SW\\StepperDriver\\stepperDriver.ino"
#include <Arduino.h>
#include "Stepper.h"
StepperD stepper[STEPPERS_COUNT];
#define interLoopsInterval 4
String commandLine;
/*********************************************************/
void setup(){}
/*********************************************************/
void loop()
{
}
@user1511360, 👍0
Обсуждение1 ответ
Имя файла INO было stepperDriver, а имя папки — StepperDriver. При выравнивании случаев ошибки исчезали. Спасибо ptillisch с сайта https://forum.arduino.cc/.
- Некоторые из операторов <include> не работают
- Библиотеки не связаны
- Ошибка: expected unqualified-id before 'if'
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Ошибка компиляции кода для Arduino/Genuino Uno
- Ошибка : заблудиться '\' в программе
Если вам нужна помощь с кодом, вы должны включить код в вопрос. Пожалуйста, отредактируйте вопрос и добавьте код (в правильном формате), @chrisl
основной ошибкой является «бродячий '##' в программе». в исходном коде stepperDriver.ino или stepper.h есть какой-то символ, запрещенный в исходном коде. (Stepper.h.cpp — это файл, созданный сборщиком Arduino как часть процесса сборки), @Juraj
Юрай. большое спасибо за оперативный ответ. Не будете ли вы так любезны предложить способ сканирования кода на наличие недопустимого символа?, @user1511360
Пожалуйста, покажите нам минимальный воспроизводимый пример, хотя бы первые строки "stepper.h", @the busybee
Нам не нужен "Stepper.h", нам нужен Stepper.h.cpp. [#line](https://learn.microsoft.com/en-us/cpp/preprocessor/hash-line-directive-c-cpp?view=msvc-170) директивы генерируются компилятором во время компиляции для отслеживания из его источников. Наряду с тем, что
##
является еще одним специальным макроопределением (комбинирующим оператором), получается, чтострока
интерпретируется таким образом., @Thomas Weller