【问题标题】:C++ include header filesC++ 包含头文件
【发布时间】:2014-01-18 18:12:39
【问题描述】:

我正在学习 C++ 并遵循本教程:http://www.learncpp.com/cpp-tutorial/19-header-files/ 他们已经命名了应该添加的头文件,而我命名为 02MultipleFiles_add.cpp。所以,当我到达包含部分时:

02MultipleFiles_add.cpp:

#ifndef ADD_H
#define ADD_H

int add( int x, int y );

#endif

02MultipleFiles.cpp:

#include "02MultipleFiles_add.h"

错误:
无法打开源文件“02MultipleFiles_add.h”
标识符“add”未定义

在例子中,为什么文件叫add.cpp却叫add.h?
为什么我不能包含我的文件?

谢谢。

【问题讨论】:

  • 你的名字“02MultipleFiles_add.cpp”有错别字,或者你的问题是根据“主文件”该文件应该被称为“02MultipleFiles_add.h”。
  • 只是添加#pragma once 可以在大多数情况下替换#ifndef 保护。它是非标准的,但得到很好的支持的预处理器指令。

标签: c++


【解决方案1】:

您的第一个文件需要从 02MultipleFiles_add.cpp 重命名为 02MultipleFiles_add.h

【讨论】:

  • 这是错误,#ifndef ADD_H 是否让它应该是#include "add.h"? gyazo.com/a1212ac0dd0314df6d30cab0760d2a5f.png
  • @user3209520 您没有正确遵循本教程。您的add.h 文件不应包含add 的定义,因为该定义已在add.cpp 中。看教程说add.h的内容应该是什么。 #endif 之后没有任何内容。错误是告诉您您有add多个定义
  • 我怀疑您的 IDE 正在尝试编译 .h 文件,这是您最初将其作为 .cpp 文件添加到项目/解决方案中的副作用。只需从解决方案中删除 .h 文件,但将其保留在磁盘上,以便预处理器在编译 .cpp 文件时仍会读取它。
  • @selbie 从截图中看不清楚,但他们仍然有add.cpp。所以包含后,add.cpp 中有一个定义,main.cpp 中有一个。
  • 谢谢,我没看错。现在我有了 02MultipleFiles_add.h 中的定义,02MultipleFiles_add.cpp 中的函数,并且#include "02MultipleFiles_add.h" 有效,但是,这是什么


    #ifndef ADD_H #define ADD_H

    是用来做什么的?如果它说 #define ADD_H 但我不在任何地方使用那个 ADD_H
【解决方案2】:

头文件可以被称为任何东西,但通常应该被称为“something.h”,而不是“something.cpp”。名为“something.cpp”的文件旨在直接传递给编译器,而不用于#include#include后面的文件名应该和文件系统中调用的文件名一致。

我很确定您在包含的文件名称中打错了字,应该将其重命名为“02MultipleFiles_add.h”而不是“02MultipleFiles_add.cpp”。

【讨论】:

    【解决方案3】:

    你已经为你的头文件提供了 .Cpp 扩展名。 所以只需更改

    02MultipleFiles_add.cpp

    02MultipleFiles_add.h

    并再次加载和编译您的项目。 我认为它肯定会起作用

    【讨论】:

      【解决方案4】:

      您应该将函数的定义放在.cpp 文件中,而不是.h 文件中。 我认为正因为如此,它在尝试再次包含时会出错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多