| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Откуда двойное определение |
| Автор: Ostap 10.2.2006, 00:35 | ||||||
| Не могу разобраться, откуда возникает ошибка. main.c:
pinit.h:
init.c:
Далее: #gcc -o sle ../main.c ../init.c /tmp/cc4ZY5WI.o(.rodata+0x0): multiple definition of `max_time' /tmp/cc0SqoSZ.o(.rodata+0x0): first defined here /tmp/cc4ZY5WI.o(.rodata+0x4): multiple definition of `delta' /tmp/cc0SqoSZ.o(.rodata+0x4): first defined here collect2: ld returned 1 exit status ---------------------- Почему компилятор выдает ошибку о повторном определении? |
| Автор: volvo877 10.2.2006, 00:41 |
| Компилятор или линкер? Компилятор ничего не выдает, с его точки зрения все прекрасно, в каждом файле и max_time и delta встречаются ровно один раз... А вот при линковке... |
| Автор: bel_nikita 10.2.2006, 01:09 | ||||
| Ostap Это
А в pinit.h:
|
| Автор: Ostap 10.2.2006, 01:14 |
| Да, наверное, я ошибся в формулировке. Так как правильно сделать? |
| Автор: Ostap 10.2.2006, 01:49 |
| bel_nikita, спасибо. Но теперь появилась другая ошибка: на строку с int initialization(double *time, double *drive, complex *condition); он говорит: syntax error before "complex" -- Ничего не менялось. Разглядеть синтаксическую ошибку не представляется возможным |
| Автор: bel_nikita 10.2.2006, 01:58 | ||
| typedef должен быть определен в pinit.h pinit.h:
|
| Автор: Ostap 10.2.2006, 02:05 |
| Извиняюсь. Все от невнимательности. Спасибо |