Учитывая следующий код,Multiple определение маркера
button.h
#ifndef BUTTON_H_
#define BUTTON_H_
#define true 1
#define false 0
#include <avr/io.h>
#include <avr/interrupt.h>
#include <timer0.h>
typedef struct {
unsigned char port;
unsigned char pin;
unsigned long timestamp;
} BUTTONS;
BUTTONS button_1;
BUTTONS button_2;
BUTTONS button_3;
enum BUTTONS_ID{BUTTONS_ID_1,BUTTONS_ID_2,BUTTONS_ID_3,BUTTONS_ID_COUNT};
BUTTONS* button[BUTTONS_ID_COUNT] = {&button_1,&button_2,&button_3};
void Button_init(void);
#endif //BUTTON_H_
и button.c
#include <button.h>
enum BUTTONS_state{BUTTON_STATE_UNPRESSED,BUTTON_STATE_DEBOUNCING,BUTTON_STATE_PRESSED};
int state = BUTTON_STATE_UNPRESSED;
void Button_init(void){
button[BUTTONS_ID_1]->port = PINB;
button[BUTTONS_ID_1]->pin = PINB4;
button[BUTTONS_ID_1]->timestamp = 0;
}
Я получаю следующее сообщение об ошибке: button.cpp: несколько определений из `button_1' . Я знаю, что я должен что-то делать неправильно. Я совершенно новый при использовании структуры, ошибка должна исходить оттуда. В принципе, я хотел создать переменную кнопки, которую я мог бы получить из своей основной программы, если это необходимо. Есть ли способ определить их в моем .h и инициализировать их внутри моего .c, а затем получить к ним доступ из моего основного файла?
Спасибо
Расширение файла 'cpp' означает, что вы компилируете компилятор C++, а не C. Поэтому ваш вопрос действительно о C++. –