Глобальная константа в заголовочном файле - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д