отличается по степени косвенности от int 'int ()' - PullRequest
0 голосов
/ 20 января 2019

Я строю связанный список, и я пытаюсь создать функцию для добавления узла, чтобы проверить, проходят ли я имя и размер.

Я думаю, что вызываю его головой, но получаюкакая-то странная ошибка, которую я не могу отладить.

struct Test{
    char name[_MAX_NAME];
    int size;
    struct Test *next;
};

typedef struct Test *node;

node AddNode(node head, char name, int size);

в моем Main

node head = NULL; // is this problem? 
head = AddNode(head,"Test Name",110);

Ошибка C2040 'AddNode': 'node (node, char, int)' отличается по уровням косвенности от 'int ()'

1 Ответ

0 голосов
/ 20 января 2019

Рассмотрим сообщение «узел (узел, символ, int)» отличается по уровням косвенности от «int ()» ». В этом сообщении int () - это тип, который получает нестандартные компиляторы из объявления по умолчанию, которое предоставляется, когда вы не объявляете функцию. То есть, когда вы используете AddNode перед его объявлением, оно автоматически объявляется как int AddNode().

Затем, позже в вашем коде, когда появляется ваше объявление AddNode, ваше объявление контрастирует с объявлением по умолчанию, и компилятор печатает это сообщение.

Чтобы исправить это, поместите объявление AddNode, прежде чем использовать его. Такое объявление должно появляться в каждом исходном файле, где оно используется. (На самом деле, объявление должно появиться в C единица перевода , что означает все файлы, которые включаются при компиляции исходного файла. Единица перевода включает заголовочные файлы, которые включены в #include. Вы должны иметь объявление AddNode либо в самом исходном файле, либо в файле, который он включает.)

Кроме того, вы объявляете AddNode как node AddNode(node head, char name, int size);, но передаете "Test Name" для второго параметра. В качестве аргумента функции "Test Name" действует как char *, а не char, поэтому вы, вероятно, захотите изменить объявление на node AddNode(node head, char *name, int size);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...