реклама на сайте
подробности

 
 
> Не могу собрать проект, Бьюсь второй день
TigerSHARC
сообщение Dec 3 2012, 16:53
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Второй день получаю одну и ту же ошибку:

CODE
main.c:(.text+0x26): undefined reference to "XXX"


Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c

Вроде всё просто. А ошибка выскакивает((

пробую делать так: объявляю "XXX" в самом файле main.c
получаю такую ошибку:

CODE
more undefined references to "XXX" follow


smile3046.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Dec 3 2012, 23:59
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c" наводит на мысль, что автор не понимает разницы между объявлением и определением переменной.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Dec 4 2012, 06:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(Сергей Борщ @ Dec 4 2012, 03:59) *
Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c" наводит на мысль, что автор не понимает разницы между объявлением и определением переменной.



единственное место где упоминается "XXX" в main.c - это

instance->engPar = XXX;

фрагмент interf.h:

CODE
typedef struct XXX_par {

uint32 Pass; //!< software password
uint32 idPass; //!< set Device ID password
uint32 aCfgPass[4]; //!< set calibration/measurement/event/create configuration password
uint32 setTime; //!< time of setting this parameter structure, seconds since 1970

} iXXX;

extern const iXXX XXX;



Сообщение отредактировал TigerSHARC - Dec 4 2012, 06:33
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 4 2012, 09:00
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (TigerSHARC @ Dec 4 2012, 08:21) *
фрагмент interf.h:
Обратите внимание на слово extern. Вы объявили переменную, но не определили ее. Вы сказали компилятору "где-то существует переменная XXX типа iXXX". Таких объявлений одной и той же переменной может быть сколько угодно в каких угодно файлах программы. Но вы нигде не определили переменную - не указали компилятору "а вот тут мы эту переменную заведем":
CODE
const iXXX XXX =
{
    123,    // software password
    456,    // set Device ID password
    { 678, 910, 1112, 1314 },   // set calibration/measurement/event/create configuration password
    1516   // time of setting this parameter structure, seconds since 1970
};
Такое определение должно быть только в одном-единственном месте в программе. И обратите внимание, ваша переменная объявлена константной, поэтому в месте объявления вы обязаны указать начальные значения этой пременной - нигде в другом месте компилятор не позволит вам присвоить ей значения.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 16:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016