Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> gcc ругаеться на совпадающие имена 
:(
    Опции темы
Proger89
Дата 6.4.2010, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Доброго времени суток.
Недавно возникло желание изучить различные структуры данных, а во время изучения написать себе маленькую либу.
Но у меня возникла одна проблема и я никак не могу её преодолеть.
У меня есть реализация линейного списка и на основе него я хотел написать стек. Вот объявление списка:
Код

 // Структура узла связного списка
    struct node
    {
        void *p_data; // Данные
        pnode p_next; // Следующий узел
        pnode p_prev; // Предыдущий узел
    };

    // Структура связного списка
    struct l_list
    {
        pnode p_head; // Заголовочный элемент
        pnode p_tail; // Концевой элемент
        comp_func c_func; // Функция сравнения
    };

    typedef struct l_list linked_list;

    ...

   int is_empty(linked_list l);

    ...


а вот стека:
Код

    struct sstack
    {
        linked_list *p_list;
        int number_of_elements;
    };

    typedef struct sstack stack;

   ...

   int is_empty(stack s);


Как видно в обоих файлах есть функция is_empty() но у них разные сигнатуры.
gcc выдает следующее:
Код

In file included from structures/stack.c:2:
structures/stack.h:36: error: conflicting types for ‘is_empty’
structures/linear_list.h:73: note: previous declaration of ‘is_empty’ was here
structures/stack.c:11: error: conflicting types for ‘is_empty’
structures/linear_list.h:73: note: previous declaration of ‘is_empty’ was here

То есть ругаеться на объявление и на реализацию фукнции.
Как можно обойти эту проблему не меняя название фукнции? Почему gcc вообще выдает ошибку, ведь у фукнций разная сигнатура?

Заранее благодарен.
PM   Вверх
borisbn
Дата 6.4.2010, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Если не ошибаюсь, в Си (а у тебя именно Си, а не Си++) не было возможности перегружать функции. Переименуй свои файлы из *.c в *.cpp


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Proger89
Дата 6.4.2010, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Цитата(borisbn @ 6.4.2010,  06:13)
Если не ошибаюсь, в Си (а у тебя именно Си, а не Си++) не было возможности перегружать функции. Переименуй свои файлы из *.c в *.cpp

Спасибо. Я просто думал что такая фундаментальная возможность должна быть в С.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.