5

我正在学习制作头文件。这是我的代码(三个单独的文件)

//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”下面和“使用命名空间”上面有那个分号。

我把它放在那里是因为视觉工作室说它期待一个,但我不知道为什么。我在教程中没有看到。

当然,它有效。但我不喜欢不知道它为什么在那里,它不应该在那里。

4

2 回答 2

14

因为你错过了functions.h中的一个分号

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

C++ 用分号分隔语句。

#include directive 会导致“functions.h”文件的内容与您的文件内容一起发送到编译器。这样做的结果是,由于头文件中的错误导致的编译错误经常在包含它们的代码中报告。(感谢 Philipp)

于 2012-12-29T00:25:36.253 回答
6

由于 C 预处理器对 C 的语法一无所知 - 如果您愿意,您可以使用它来整理电子邮件、汇编源文件或 HTML,它只是将所有源代码放在一个长文件中,供编译器实际编译。

而且您int multiply(int x, int y)在“functions.h”之后缺少一个分号。

于 2012-12-29T00:28:01.553 回答