Глобальная константа в заголовочном файле - C (СИ)
Формулировка задачи:
Всем привет, я пишу небольшую библиотечку для работы с микроконтроллером Atmega8, используя среду CV AVR.
я создал заголовочный файл с таким содержанием
этот хидер инклюдится в main.c и DATime.c
Мне необходимо объявить константу Нуль времени, такую чтобы её было видно во всех файлах куда подключается хидер. однако если я объявляю её следующим образом
то получаю ошибку линкера, о том что выражение было redefined, хотя я нигде не использую эту константу.
Если призвать на помощь extern, и написать
то получу ту же самую ошибку о том что выражение было redefined.
если я уберу определение константы, то не возникнет никаких ошибок, однако структура будет неинициализирована ...
в каком месте я допускаю ошибку скажите пожалуйста. как сделать эту структуру глобальной ?
Листинг программы
- #ifndef _DATIME_H_
- #define _DATIME_H_
- #include "da_types.h"
- typedef struct
- {
- uint16 ms;
- uint8 sec;
- uint8 min;
- uint16 hour;
- } Time;
- //const Time TIME_NULL = {0, 0, 0, 0};
- #pragma used-
- Time summ(Time, Time);
- Time time_max(Time, Time);
- Time duration(Time, Time);
- uint32 duration_s(Time, Time);
- uint32 duration_m(Time, Time);
- uint16 duration_h(Time, Time);
- #pragma used+
- #endif
Листинг программы
- const Time TIME_NULL = {0, 0, 0, 0};
Листинг программы
- extern const Time TIME_NULL = {0, 0, 0, 0};
Решение задачи: «Глобальная константа в заголовочном файле»
textual
Листинг программы
- #include "def.h"
- int main(void) {
- printf(__FILE__ ": %d\n", c);
- print_c();
- assign_c(1);
- printf(__FILE__ ": %d\n", c);
- print_c();
- return 0;
- }
Объяснение кода листинга программы
- Включаем заголовочный файл
def.h
- В функции main() выводим текущий файл и значение переменной c с помощью функции printf()
- Вызываем функцию print_c() для вывода значения переменной c
- Присваиваем переменной c значение 1 с помощью функции assign_c()
- Выводим текущий файл и новое значение переменной c с помощью функции printf()
- Снова вызываем функцию print_c() для вывода нового значения переменной c
- Завершаем работу функции main() и программы в целом, возвращая 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д