|
Как правильно создать многофайловый проект, Ошибка при линковке |
|
|
|
 |
Ответов
|
Apr 13 2008, 10:55
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Добрый день! Многофайловый проект, чёрт по..... Подскажите, как обойти ошибку, извиняюсь что может быть повторяюсь. Просто переопределения нигде не вижу, понимаю что чтото с включением файлов, пытался экстернить но не помогло. Прикреплю проджект на всякий случай. Спросил на телесисах, но там молчок Error[e27]: Entry "EN" in module driver_lcd ( C:\Program Files\IAR Systems\test\testlsd\Debug\Obj\driver_lcd.r90 ) redefined in module main ( C:\Program Files\IAR Systems\test\testlsd\Debug\Obj\main.r90 ) ИАР версия 4.хх. имею след код файл bitdef.h Код #ifndef BITDEF_H #define BITDEF_H #ifndef BOOL_t #define BOOL_t typedef uint8_t bool_t; #endif // BOOL_t #ifndef BitStr_t #define BitStr_t typedef volatile uint8_t * port_t; typedef struct{ port_t Port; bool_t Bit; }Port_Bit; #endif // BitStr_t #pragma inline=forced void SETDDR(const Port_Bit * pb){ *(pb->Port-1) |= 1 << pb->Bit; } #endif //BITDEF_H файл driver_lcd.c Код #ifndef driver_lcd_C #define driver_lcd_C #include "driver_lcd.h" #include "delay.h" // Команда на настройку выводов управления линиями управления ЖКИ на выход void lcd_CMND_port_out(void) { SETDDR(RW);\ SETDDR(EN);\ SETDDR(RS);\ }; #endif //driver_lcd_C файл driver_lcd.h Код #ifndef driver_lcd_H #define driver_lcd_H #include "bitdef.h" // "E" Clock Port_Bit dEN={&PORTB, 3}; const Port_Bit * EN = &dEN; void lcd_CMND_port_out(void); #endif //driver_lcd_H
Сообщение отредактировал sKWO - Apr 13 2008, 10:58
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Apr 13 2008, 14:08
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(sKWO @ Apr 13 2008, 13:55)  файл driver_lcd.h Код #ifndef driver_lcd_H #define driver_lcd_H #include "bitdef.h" // "E" Clock Port_Bit dEN={&PORTB, 3}; <<<<<<<<!!!!!!!!!! const Port_Bit * EN = &dEN; <<<<<<<<!!!!!!!!!! #endif //driver_lcd_H У вас в driver_lcd.h вынесено определение указателя EN. И это, естественно, является причиной переопределения. Нарушено правило одного определения. Перенесите определения в driver_lcd.с, а в driver_lcd.h объявите эти переменные с модификатором extern. PS. Это же касается и других переменных. И уберите обратные слеши в определении lcd_CMND_port_out. Они там ни к чему. PS2. И Код #ifndef driver_lcd_C #define driver_lcd_C ... ... это лишнее.
|
|
|
|
|
Apr 13 2008, 18:14
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(alux @ Apr 13 2008, 17:08)  У вас в driver_lcd.h вынесено определение указателя EN. И это, естественно, является причиной переопределения. Нарушено правило одного определения. Перенесите определения в driver_lcd.с, а в driver_lcd.h объявите эти переменные с модификатором extern. Спасибо добрый чел, а то как-то грустно было вместо файла driver_lcd.h в мейне подключать файл driver_lcd.c. Так компилится без ошибок. Поэтому и было Код #ifndef driver_lcd_C #define driver_lcd_C Сам знаю что не правильно, а с меня пиво  , щас программы нету под рукой но думаю что вопрос будет закрыт
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
Сообщений в этой теме
alux Как правильно создать многофайловый проект May 6 2007, 14:07 jorikdima хидеры то подключены, а в опциях проекта пути к ни... May 6 2007, 14:20 alux Цитата(jorikdima @ May 6 2007, 17:20) хид... May 6 2007, 14:46  rezident Цитата(alux @ May 6 2007, 20:46) Все файл... May 6 2007, 18:25 andrej2005 Цитата(jorikdima @ May 6 2007, 18:20) хид... Apr 20 2008, 10:34 zltigo Цитата(alux @ May 6 2007, 17:07) void bat... May 6 2007, 14:24 SasaVitebsk Простите, решил сюда добавить, чтобы темы не плоди... Dec 9 2007, 19:06 singlskv Цитата(SasaVitebsk @ Dec 9 2007, 22:06) С... Dec 9 2007, 20:22 Сергей Борщ Цитата(SasaVitebsk @ Dec 9 2007, 21:06) п... Dec 9 2007, 21:56  alexander55 Цитата(Сергей Борщ @ Dec 10 2007, 00:56) ... Dec 11 2007, 06:17   Сергей Борщ Цитата(alexander55 @ Dec 11 2007, 08:17) ... Dec 11 2007, 09:51    alexander55 Цитата(Сергей Борщ @ Dec 11 2007, 12:51) ... Dec 11 2007, 10:29     Сергей Борщ Цитата(alexander55 @ Dec 11 2007, 12:29) ... Dec 11 2007, 13:07      alexander55 Цитата(Сергей Борщ @ Dec 11 2007, 16:07) ... Dec 11 2007, 13:39       Сергей Борщ Цитата(alexander55 @ Dec 11 2007, 15:39) ... Dec 11 2007, 15:20 Непомнящий Евгений Просветите плиз - что такое "п/п"? Dec 10 2007, 06:26 Николай Z Цитата(Непомнящий Евгений @ Dec 10 2007, 09... Dec 10 2007, 07:21 Непомнящий Евгений Что такое подпрограмма - я в курсе Просто не сооб... Dec 10 2007, 07:34 SasaVitebsk Я, собственно так и работаю. И думал так все. В с... Dec 11 2007, 10:58 Panych Подниму тему, чтоб не плодить...
Объявляю внешнюю ... Apr 7 2008, 13:32 gotty Цитата(Panych @ Apr 7 2008, 16:32) Подним... Apr 7 2008, 13:45  alux Цитата(gotty @ Apr 7 2008, 16:45) И ещё с... Apr 8 2008, 12:04 Panych gotty
спасибо, сделал функцию внешней, IAR ругнулс... Apr 7 2008, 14:15 MrYuran Цитата(Panych @ Apr 7 2008, 17:15) gotty
... Apr 8 2008, 12:11 ivainc1789 Тема о многостраничных файлах, задам и свой махонь... Apr 9 2008, 15:09 Непомнящий Евгений Цитата(ivainc1789 @ Apr 9 2008, 19:09) Те... Apr 9 2008, 15:51 rezident Цитата(ivainc1789 @ Apr 9 2008, 21:09) Те... Apr 9 2008, 21:55 Непомнящий Евгений Цитата(sKWO @ Apr 13 2008, 14:55) Кодtype... Apr 14 2008, 04:44  alux Цитата(Непомнящий Евгений @ Apr 14 2008, 07... Apr 14 2008, 06:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|