Не могу понять как исправить эту ошибку компиляции
все работало какое-то время и сильно изменилось, чтобы снова заработало. не очень понимаю ошибку.
[![C:\Users\bavob\AppData\Local\Temp\ccyfrkaL.ltrans0.ltrans.o: В функции `loop':
C:\Users\bavob\Documents\Arduino\counte_up/counte_up.ino:96: неопределенная ссылка на `num_Write(int)'
collect2.exe: ошибка: ld вернул 1 статус выхода
статус выхода 1 Был сделан компилятор для платы Arduino/Genuino Uno]1]1
{ 1, 1, 1, 1, 1, 0, 1 }, // 0
{ 0, 1, 1, 0, 0, 0, 0 }, // 1
{ 1, 1, 0, 1, 1, 1, 0 }, // 2
{ 1, 1, 1, 1, 0, 1, 0 }, // 3
{ 0, 1, 1, 0, 0, 1, 1 }, // 4
{ 1, 0, 1, 1, 0, 1, 1 }, // 5
{ 1, 0, 1, 1, 1, 1, 1 }, // 6
{ 1, 1, 1, 0, 0, 0, 0 }, // 7
{ 1, 1, 1, 1, 1, 1, 1 }, // 8
{ 1, 1, 1, 0, 0, 1, 1 } // 9
};
int pin = 2;
int buttonState = 0;
const int button = 12;
int led = 13;
int randVal;
bool pressVal;
void num_Write(int);
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
pinMode(button, INPUT);
}
void loop() {
buttonState = digitalRead(button);
if (buttonState == LOW) {
turnOff();
pressVal = false;
}
else
{
if (pressVal == false)
{
randVal = rand() % 10;
pressVal = true;
}
Serial.println(randVal);
if (randVal == 0)
{
void zero(int number);
num_Write(0);
}
else if (randVal == 1)
{
void one(int number);
num_Write(1);
}
else if (randVal == 2)
{
void two(int number);
num_Write(2);
}
else if (randVal == 3)
{
void three(int number);
num_Write(3);
}
else if (randVal == 4)
{
void four(int number);
num_Write(4);
}
else if (randVal == 5)
{
void five(int number);
num_Write(5);
}
else if (randVal == 6)
{
void six(int number);
num_Write(6);
}
else if (randVal == 7)
{
void seven(int number);
num_Write(7);
}
else if (randVal == 8)
{
void eight(int number);
num_Write(8);
}
else
{
void nine(int number);
num_Write(9);
}
}
}
void zero(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void one(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void two(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void three(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void four(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void five(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void six(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void seven(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void eight(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void nine(int number)
{
for (int j = 0; j < 7; j++) {
digitalWrite(pin, num_array[number][j]);
pin++;
}
}
void turnOff()
{
}
@Bavo, 👍1
1 ответ
Лучший ответ:
Вы часто вызываете функцию num_Write
, создаете предварительное объявление:
void num_Write(int);
Но вы забыли создать реализацию.
Если бы вы забыли предварительное объявление, функция вообще была бы неизвестна (и вы бы получили ошибку компилятора). Но с предварительным объявлением вы сообщаете компилятору сигнатуру num_write
(то есть возвращаемое значение и типы аргументов).
Когда компоновщик хочет связать все файлы объектов (.o) вместе, он не может найти реализацию функции num_write
, и вы получаете эту ошибку. Следовательно, ld
является компоновщиком.
- Печать string and integer LCD
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Глобальные переменные занимают много места в динамической памяти.
- (Код ультразвукового датчика: такого файла или каталога нет)
- rfid_default_keys проверить с помощью RC522
- Команда strtok() с Serial связью
Итак, что мне нужно сделать, чтобы исправить это?, @Bavo
создайте реализацию для num_Write … так что напишите void num_Write(int value) { … } где … содержит реализацию (что функция должна делать)., @Michel Keijzers