Ожидаемый инициализатор перед именем функции

#c #gcc #compilation

#c #gcc #Сборник

Вопрос:

 #include <iostream>
#include <string>

using namespace std;

struct sotrudnik {
    string name;
    string speciality;
    string razread;
    int zarplata;
}

sotrudnik create(string n,string spec,string raz,int sal) {
    sotrudnik temp;
    temp.name=n;
    temp.speciality=spec;
    temp.razread=raz;
    temp.zarplata=sal;
    return temp;
}
*sotrudnik str_compare (string str1, string str2, sotrudnik sot1, sotrudnik sot2)
  

Я пытаюсь выучить C . Но когда я пытаюсь скомпилировать этот код с помощью GCC-4.4.5, используя опции «g -Wall -c», я получаю следующую ошибку:

g -Wall -c «lab2.cc » (в каталоге: /home/ion/Univer/Cpp)

lab2.cc:11: ошибка: ожидаемый инициализатор перед create

lab2.cc:20: ошибка: ожидаемый конструктор, деструктор или преобразование типа перед str_compare

Сбой компиляции.

Обе ошибки связаны с объявлениями функций. (раунд 11 — объявление функции create, раунд 20 — функции str_compare ). Пытался поискать в Google ошибки такого рода, но не смог найти примеров похожих ошибок, поскольку сообщения об ошибках очень общие. Как я могу понять их значение и как их решить? Большое спасибо за ваше внимание.

Ответ №1:

У вас отсутствует точка с запятой в конце вашего определения ‘struct’.

Также,

 *sotrudnik
  

должен быть

 sotrudnik*
  

Комментарии:

1. Большое вам спасибо, я это пропустил .. в любом случае, вторая ошибка остается той же. Это потому, что is возвращает указатель на созданный мной тип структуры?

2. похоже, что этот тип ошибки возникает, когда отсутствуют точки с запятой, такие загадочные c .

Ответ №2:

Попробуйте добавить точку с запятой в конец вашей структуры:

  struct sotrudnik {
    string name;
    string speciality;
    string razread;
    int zarplata;
} //Semi colon here
  

Комментарии:

1. Возможно, было бы лучше предложить отредактировать исходный ответ.