ошибка C2601: «main»: определения локальных функций незаконны — MS VS 2013 Compiler

Я пишу небольшую программу на C ++. Когда я пытаюсь скомпилировать его с помощью MS VS 2013 Compiler, я получаю сообщение об ошибке: «C2601:« main »: определения локальных функций недопустимы». Что это значит? Мой код:

#include <iostream>
int n;
int pomocniczaLiczba;
using namespace std;
int ciong(int n){
switch (n)
{
case 1:
return 1;
break;
case 2:
return 2;
break;
default:
pomocniczaLiczba = ciong(n - 2) + ciong(n - 1) * ciong(n - 1);
return pomocniczaLiczba;
break;
}
int main()
{
cin >> n;
cout >> ciong(n);
return 0;
}
}

-1

Решение

Ваш брекетинг сломан. В результате вы пытаетесь определить свой main функция внутри ciong, А C ++ не поддерживает определения вложенных функций. Отсюда ошибка компилятора.

Код должен быть:

#include "stdafx.h"#include <iostream>
using namespace std;int ciong(int n)
{
switch (n)
{
case 1:
return 1;
break;
case 2:
return 2;
break;
default:
int pomocniczaLiczba = ciong(n - 2) + ciong(n - 1) * ciong(n - 1);
return pomocniczaLiczba;
break;
}
} // <----- Oops, this was missing in your code

int main()
{
int n;
cin >> n;
cout << ciong(n) << endl;
return 0;
}

И есть другие ошибки. Например, вы имели в виду cout << ciong(n),

12

Другие решения

Используя Visual Studio 2013 C ++, я получил ошибки компиляции, которые я не смог объяснить.

Ошибки компиляции были:

* main.cpp (325): ошибка C2601: «FLAG»: определения локальных функций недопустимы

main.cpp (323): эта строка содержит ‘{‘, который еще не был найден

main.cpp (326): фатальная ошибка C1075: обнаружен конец файла до сопоставления левой скобки ‘{‘ at ‘main.cpp (323)’ *

Но с моим кодом не было ничего плохого. Я посчитал все скобки и число совпало. Там не было никакой функции внутри другой функции.

Я решил это, удалив все комментарии «//» из исходного кода. Кажется, что причиной этого является плохое форматирование строки, из-за которого компилятор пропускает разрыв строки, поэтому строка после комментария также рассматривается как комментарий.

Например:

// This is a comment

This_is_a_line;

рассматривается как:

// This is a comment This_is_a_line;

Есть много сообщений в сети о подобных проблемах, и некоторые даже предположили, что они могут быть вызваны ошибкой памяти (RAM) на машине, поэтому, прежде чем заменять свою RAM, просто удалите комментарии и посмотрите …

  • Майкл Хефрати מיכאל האפרתי
0

По вопросам рекламы [email protected]