Связанные списки в C, как исправить ожидаемую ошибку идентификатора? - PullRequest
0 голосов
/ 01 июня 2019

Я новичок в C и не могу заставить эту вещь правильно скомпилироваться, можете ли вы мне помочь?

struct tagNode
{
    int v, f;

    struct tagNode *next;

    struct tagNode( int _v )
    {
        v = _v;
        next = NULL;
    }
};

ожидаемый идентификатор или '(' перед 'int': struct tagNode (int _v)

1 Ответ

0 голосов
/ 01 июня 2019

ожидаемый идентификатор или ‘(’ перед «int»: struct tagNode (int _v)

это из-за неожиданной struct при компиляции в C ++

Допустимая версия вашего кода в C ++ может быть:

struct tagNode
{
    int v, f;

    tagNode *next;

    tagNode (int _v)
    {
        v = _v;
        next = NULL;
    }
};

но

  • как насчет f ?
  • конструктор также может быть tagNode(int _v) : v(_v), next(NULL) {}
  • и у вас есть указатель, поэтому я рекомендую вам взглянуть на правило трех

В C нет конструктора / методов, поэтому эквивалент вашего кода в C может быть:

#include <stdlib.h>

struct tagNode
{
  int v, f;
  struct tagNode * next;
};

struct tagNode * alloc(int _v)
{
  struct tagNode * r = malloc(sizeof(struct tagNode));

  r->v = _v;
  r->next = NULL;
  return r;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...