在C ++中的两个文件上使用标头?

时间:2019-04-02 00:49:28

标签: c++ header-files

我有一个方法名称为“ Sample.h”的头文件。我已将其导入另一个文件“ methods.cpp”,并为其中的所有方法编写了代码。现在,我有第三个文件“ output.cpp”,并希望使用在方法文件中定义的方法。我是否只导入“ Sample.h”?

2 个答案:

答案 0 :(得分:1)

关于包含防护和非标准#pragma once的问题引起了很多争议。它们与在多个源文件中使用相同的标头无关。当您在单个源文件中多次包含同一个标头时,它们可为您提供保护,以防止出现多个定义错误。

当需要在一个源文件中定义函数并从另一个源文件调用它们时,可以将函数原型放在标头中,并将该标头包含在两个源文件中。像这样:

// function.h
#ifndef FUNCTION_H
#define FUNCTION_H
void f();
#endif // FUNCTION_H

// function.cpp
#include "function.h
#include <iostream>
void f() {
    std::cout << "Here I am.\n";
}

// user.cpp
#include "function.h"
int main() {
    f();
    return 0;
}

答案 1 :(得分:-1)

是的,但是最好使用类似这样的东西:

#ifndef MY_SAMPLE__DOT__H__
#define MY_SAMPLE__DOT__H__

... rest of your header

#endif

这可以防止无意中多次包含您的代码。这是个好习惯,您应该一直在所有标头中使用它。将所有标头换行。

或者使用:

#pragma once

根据建议。它不是标准的,因此可能不受支持。 More about #pragma once