ошибка C2143: синтаксическая ошибка: отсутствует ';'перед '{' в C - PullRequest
0 голосов
/ 13 февраля 2019

В настоящее время я испытываю очень странную ошибку C.Когда я пытаюсь скомпилировать следующий код .c:

 #include <stdio.h>
int main() {

    int five() {
        return 5;
}

for (int i = 0; i < 10; i++) {
    printf("%d ", five());
    }

    return 0;
}

, я получаю следующую ошибку:

error C2143: syntax error: missing ';' before '{' in C

Я думаю, что-то не так с моим компилятором, но что?

Я использую Visual Studio Community 2017 в Windows 10 и его командной строке для разработчиков.Так что мой компилятор кл.

Рад слышать, если кто-то есть подсказка.

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Правильно отформатирован, с некоторыми начальными комментариями для ясности.

#include <stdio.h>

int five()   /* Start of Function FIVE */
{
    return 5;
}            /* End of Function FIVE */



int main()   /* Start of MAIN */
{
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", five());
    }

    return 0;
}             /* End of MAIN */
0 голосов
/ 13 февраля 2019

Компилятор работает "token" и "token".После int main() { он видит токены int, five, ( и ), которые являются частью объявления функции пять (возвращает int и принимает неуказанное, но фиксированное количество аргументов).Это объявление завершается токеном ;, но следующим доступным токеном является {, который делает весь синтаксис недопустимым.

TLDR: вложенные функции недопустимы в C.

0 голосов
/ 13 февраля 2019

Это то, чего вы хотите достичь?

#include <stdio.h>
int five() {
        return 5;
    }
int main() {
    for (int i = 0; i < 10; i++) {
    printf("%d ", five());
    }
    return 0;

}
...