Почему моя функция получает ошибку, которая не определена в этой области?Я просто пытаюсь вызвать функцию и запустить ее прямо сейчас - PullRequest
1 голос
/ 12 мая 2019

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

typedef struct state {
  char trans[100];
  bool final;
  struct state *next;
} STATE;

STATE *stu = NULL;

stu = createList(stu, trans, states);

STATE* createList (STATE *stu, char trans, int states) {
    for (int i = states; i > 0; i--) {
        printf("%d", i); /*ccode check*/
    }
    return stu;
}

1 Ответ

3 голосов
/ 12 мая 2019

Если это ваш C-файл, обратите внимание на две вещи:

  1. Вы должны объявить функцию (то есть прототип) до того, как сможете ее использовать.

  2. Вы не можете иметь исполняемый код на глобальном уровне.

Попробуйте:

typedef struct state {
  char trans[100];
  bool final;
  struct state *next;
} STATE;

STATE *stu = NULL;

STATE* createList (STATE *stu, char trans, int states) {
    for (int i = states; i > 0; i--) {
        printf("%d", i); /*ccode check*/
    }
    return stu;
}

int main (void)
{
    stu = createList(stu, trans, states);
    return 0;
}

Обратите внимание, что я не дал прототип в этом примере, потому что полная функция определяется до того, как она будет использована, поэтому компилятор знает все об этом.

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