C ++ обучающие заголовочные файлы. Что за точка с запятой?

Так что я учусь делать заголовочные файлы. Вот мой код (три отдельных файла)

//Main.cpp
#include <iostream>
#include "functions.h";
using namespace std;

int main()
{
cout << multiply(3, 4) << endl;

return 0;
}

//functions.cpp
int multiply(int x, int y)
{
return x * y;
}

//functions.h
#ifndef FUNCTIONS_H_
#define FUNCTIONS_H_

int multiply(int x, int y)

#endif

Код компилируется и запускается, но часть, которая беспокоит меня, находится в Main.cpp. Эта точка с запятой находится в «functions.h» и выше, «используя пространство имен».

Я поместил это там, потому что визуальная студия сказала, что ожидала одного, но я понятия не имею почему. Я не вижу этого в уроках.

Конечно, это работает. Но мне не нравится не знать, почему это там и что это не должно быть.

Спасибо за помощь!

6

Решение

Потому что вы пропускаете одну точку с запятой в functions.h

int multiply(int x, int y);
^^^^ here

C ++ разделяет операторы точкой с запятой.

#include directive
заставляет содержимое файла «functions.h» отправлять компилятору вместе с содержимым вашего файла. Результатом этого является то, что ошибки компиляции, вызванные ошибками в заголовочных файлах, часто сообщаются в коде, который включает их (спасибо Филиппу)

14

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

Поскольку препроцессор C вообще ничего не знает о синтаксисе C — вы можете использовать его для объединения электронных писем, исходных файлов на ассемблере или HTML, если хотите, он просто помещает весь исходный код в один длинный файл для фактической компиляции компилятором.

И вы пропустили точку с запятой после int multiply(int x, int y) в «functions.h».

6

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