Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Timas
0 / 0 / 1
Регистрация: 22.11.2014
Сообщений: 153
1

Ошибка conflicting types

06.04.2017, 19:48. Просмотров 2053. Ответов 10
Метки нет (Все метки)

Из-за чего и как ее исправить?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <stdbool.h>
#include <stdio.h>
#include "bst.h"
 
void PKL(BstNode **node, const int level);
 
 
int main(void)
{
    int i, maxBFS;
    char cmd[255], arg;
    BstNode *root = NULL;
 
    do
    {
        printf("Введите команду (h - справка):\n");
        scanf("%s", cmd);
 
        if (cmd[0] == '+')
        {
            scanf(" %c", &arg);
 
            if (arg >= 'A' && arg <= 'Z')
            {
                bstInsert(&root, arg);
 
                printf("Узел %c вставлен\n", arg);
            }
            else
                printf("Ошибка. Введена недопустимая буква\n");
        }
        else if (cmd[0] == '-')
        {
            scanf(" %c", &arg);
 
            if (arg >= 'A' && arg <= 'Z')
            {
                if (bstRemove(&root, arg))
                    printf("Узел %c удален\n", arg);
                else
                    printf("Узел %c не найден\n", arg);
            }
            else
                printf("Ошибка. Введена недопустимая буква\n");
        }
        else if (cmd[0] == 'p')
        {
            PKL(&root, 0);
        }
        
        else if (cmd[0] == 't')
        {
         if (is_symmetric(&root))
         {
            printf("YES");
         }
            else
            {
            printf("NO");   
            }   
            }   
        else if (cmd[0] == 'h')
        {
            printf("================================\n");
            printf("Список команд:\n");
            printf("+ CHAR - вставить узел CHAR (A, B, ..., Z) в двоичное дерево\n");
            printf("- CHAR - удалить узел CHAR из двоичного дерева\n");
            printf("p - распечатать двоичное дерево\n");
            printf("t - выполнить задание над двоичным деревом\n");
            printf("q - завершить программу\n");
            printf("================================\n");
        }
        else if (cmd[0] != 'q')
        {
            printf("Неизвестная команда\n");
        }
    }
    while (cmd[0] != 'q');
 
    bstDestroy(&root);
 
    return 0;
}
void PKL(BstNode **node, const int level)
{
    if (*node == NULL)
    {
        printf("Дерево пусто\n");
 
        return;
    }
 
    if ((*node)->_right != NULL)
        PKL(&(*node)->_right, level + 1);
 
    printf("%*s%c\n", level * 2, "", (*node)->_key);
 
    if ((*node)->_left != NULL)
        PKL(&(*node)->_left, level + 1);
}
 
 
_Bool mirror_equals(BstNode *_left, BstNode *_right)
{
    if( _left == NULL || _right == NULL )
        {return _left == NULL && _right == NULL;
    return (_left->_key == _right->_key &&
        mirror_equals(_left->_left, _right->_right) &&
        mirror_equals(_left->_right, _right->_left) );}
}
_Bool is_symmetric(BstNode *node)
{
    if( node == NULL|| mirror_equals(node->_left, node->_right))
        {return true;}
    else {return false;}
}
Bash
1
2
3
4
5
6
3.c:111:7: error: conflicting types for ‘is_symmetric’
 _Bool is_symmetric(BstNode *node)
       ^
3.c:53:8: note: previous implicit declaration of ‘is_symmetric’ was here
    if (is_symmetric(&root))
        ^
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2017, 19:48
Ответы с готовыми решениями:

Conflicting types в СИ
Добрый вечер. Возникла проблема, застопорился на ней, объясните пожалуйста: Есть прога, в которой...

Conflicting types for ‘getline’
Вот код который работает на Windows, использую CLion #include &lt;stdio.h&gt; #define MAXLINE...

Error: conflicting types for ‘yylval’
Здравствуйте! Прошлой зимой был написан следующий код: stark.lex %{ #include &lt;stdio.h&gt; ...

Error:conflicting types for 'getline'
Здравствуйте. В программе выскакивает ошибка error : conflicting types for 'getline' Объясните в...

Ошибка в структуре: Invalid types `int[int]' for array subscript
Ошибка при работе со структурой:607 D:\Ø\ïðàêòèêà\8\lpr81111.cpp invalid types `int' for array...

10
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,326
06.04.2017, 23:02 2
Цитата Сообщение от Timas Посмотреть сообщение
Из-за чего
Из-за того, для функции is_symmetric не предоставлено прототипа на момент вызова.

Цитата Сообщение от Timas Посмотреть сообщение
и как ее исправить?
Не забывать предоставлять прототипы функций.

Почему для PKL прототип сделан, а для остальных нет? На основе чего принималось решение, какие функции прототипизировать, а какие нет?
0
Timas
0 / 0 / 1
Регистрация: 22.11.2014
Сообщений: 153
07.04.2017, 13:35  [ТС] 3
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Почему для PKL прототип сделан, а для остальных нет?
Пробовал с
C
1
2
_Bool mirror_equals(BstNode *_left, BstNode *_right);
_Bool is_symmetric(BstNode *node);
, но также не работало.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,326
07.04.2017, 17:33 4
Цитата Сообщение от Timas Посмотреть сообщение
Пробовал с
C
1
2
_Bool mirror_equals(BstNode *_left, BstNode *_right);
_Bool is_symmetric(BstNode *node);
, но также не работало.
Что значит "пробовал" и что значит "не работало"?
2
Key27
3 / 3 / 0
Регистрация: 02.04.2017
Сообщений: 234
08.04.2017, 08:28 5
TheCalligrapher, видимо неправильно объявлял прототип
1
Timas
0 / 0 / 1
Регистрация: 22.11.2014
Сообщений: 153
08.04.2017, 16:11  [ТС] 6
TheCalligrapher, Я добавил
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
_Bool mirror_equals(BstNode *_left, BstNode *_right);

_Bool is_symmetric(BstNode *node);
в начало программы. Но не заработало.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,326
08.04.2017, 20:47 7
Цитата Сообщение от Timas Посмотреть сообщение
Но не заработало.
Еще раз: что такое "не заработало"???

Когда вы вставили на место объявления, эти ошибки пропали - это ясно. Зачем вы нам теперь рассказываете какие-то туманные истории про "не заработало"? Что "не заработало"? Как "не заработало"?
0
Key27
3 / 3 / 0
Регистрация: 02.04.2017
Сообщений: 234
09.04.2017, 10:05 8
TheCalligrapher, ошибки не пропали, в том то и дело. Просто ничего не изменилось
0
shvyrevvg
743 / 553 / 277
Регистрация: 12.05.2016
Сообщений: 1,607
09.04.2017, 10:40 9
Key27, в _Bool is_symmetric(BstNode *node) ТС передает BstNode **node.
1
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,326
09.04.2017, 12:27 10
Цитата Сообщение от Key27 Посмотреть сообщение
ошибки не пропали, в том то и дело. Просто ничего не изменилось
Не надо обманывать. Если вы сделали объявление этих функций, то ваши исходные ошибки полностью пропали. На смену им пришли совсем другие ошибки, в том числе ошибка, описанная в сообщении shvyrevvg выше.

Вы же нам зачем-то рассказываете сказки о том, что "ничего не изменилось". Зачем?
0
Timas
0 / 0 / 1
Регистрация: 22.11.2014
Сообщений: 153
09.04.2017, 15:20  [ТС] 11
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Зачем?
Да я делал это не специально... Только сейчас появился полноценный доступ к пк--->смог основательно со всем этим разобраться. А к чему все это?
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не надо обманывать.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вы же нам зачем-то рассказываете сказки
Это выглядит смешно... Никто никого и не собирался обманывать. В теории все понимаю, но на практике возникает много проблем(тк этой самой практики действительно мало).
0
09.04.2017, 15:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 15:20

Conflicting types for
Всем привет,подскажите как исправить данную ошибку,пытаюсь освоить протокол SPI. /** ...

Ошибка conflicting type modifiers
Помогите разобраться Вот код #ifndef LanguageH #define LanguageH...

У меня есть код. Ошибка conflicting type modifiers !
Помогите разобраться!!! extern void TRLS(String&amp; sStr) { if (pLangSupp != NULL) sStr =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru