C++ 找不到包含

C++ Cannot find Include

main.cpp 中,我不断收到错误提示 print 未定义(以及其他类似的错误。

我在名为 "misc"

的头文件下定义了 print()

misc.h

#include <iostream>
#include <cstdlib>
#include <fstream>
#define MISC_H
#ifndef MISC_H

void print(string str) { cout << str << endl; }

string userIn(string prompt = "Option:") { //For collecting user responses
  string response;
  print(prompt);
  cin.clear();
  cin.sync();
  getline(cin, response);
  if (!cin) { response = "wtf"; }
  else if (response == "512") { //Secret termination code
    print("Program terminated");
    exit(0);
  }
  print("");
  return response;
}
#endif

然后在main.cpp#include Headers/misc.h"(头文件位于单独的文件夹)

我这里有什么地方做错了吗?

您的 #ifndef#define 顺序错误。应该是:

#ifndef MISC_H
#define MISC_H

最好在其他包含之前的文件顶部。

在不知道您使用的编译命令的情况下,我看到的是您的“include guard”不正确。

第一个命令 #define MISC_H 将使宏开始存在。

之后你调用#ifndef MISC_H的时候会一直为false,因为你刚刚定义了它,效果是这个文件的源总是被丢弃

您需要将这些线翻转成如下所示:

#ifndef MISC_H
#define MISC_H

从未到达 #ifndef MISC_H ... #endif 块。 MISC_H 是在此之前定义的,因此它永远不会通过那里的 if 条件,因此永远不会定义您的打印函数。

这样做:

#ifndef MISC_H
#define MISC_H

//Now define what you want to define

尽管您可以完全省略这些并使用 #pragma once,如果可用的话。