Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的include文件不能编译?_C++ - Fatal编程技术网

C++ 为什么我的include文件不能编译?

C++ 为什么我的include文件不能编译?,c++,C++,头文件将不会编译到我的主测试程序中。为什么会这样呢。我在网上看过,但没有找到简单的理由。我已经尝试了几个ifndef,并且定义了,但仍然不确定为什么该文件不会包含在我的测试程序中 下面是我在尝试编译测试程序时收到的错误消息。这与头文件有关,但我不确定如何解决这个简单的问题。奇怪的是,我以前使用C++,并且不记得头文件有这个问题。 错误: 错误1错误C2015:常量c:\users\itpr13266\desktop\c++\testproject\testproject\testproject.

头文件将不会编译到我的主测试程序中。为什么会这样呢。我在网上看过,但没有找到简单的理由。我已经尝试了几个ifndef,并且定义了,但仍然不确定为什么该文件不会包含在我的测试程序中

下面是我在尝试编译测试程序时收到的错误消息。这与头文件有关,但我不确定如何解决这个简单的问题。奇怪的是,我以前使用C++,并且不记得头文件有这个问题。

错误:

错误1错误C2015:常量c:\users\itpr13266\desktop\c++\testproject\testproject\testproject.cpp 10 1 testproject中的字符太多

错误2错误C2006:“包含”:应为文件名,找到“常量”c:\users\itpr13266\desktop\c++\testproject\testproject\testproject\testproject.cpp 10 1 testproject

错误3错误C1083:无法打开包含文件::没有这样的文件或目录c:\users\itpr13266\desktop\c++\testproject\testproject\testproject\testproject.cpp 10 1 testproject

代码

代码头文件

#include <iostream>

int myAdd1(int, int);
int myAdd2(int, int, int, int, int);

struct myFirst1
{
}

struct myFirst2
{
}

int myAdd1(int x, int y)
{
    return x + y;
}

int myAdd2(int x, int y, int z, int m, int y)
{
    return x + y;
}
此行无效:

#include'myDataStructures.h' <-- name of my include file

错误消息的帮助比它们可能的要小一些,因为实际上可以使用,这使得它们的使用不是很方便,因此很少使用。

在包含文件时,需要使用双引号MyIncludeFile.h。

使用include myDataStructures.h而不是include“myDataStructures.h”


后者会导致语法错误。

您需要用双引号括起文件名include\u filename,或者用尖括号括起include语句:

 #include "myDataStructures.h"
使用双引号查找通过编译器的-I指定的其他目录,例如GCC或等效选项,包括发布文件目录,然后返回到尖括号搜索顺序,该顺序也查找当前工具链的固有目录

关于固定样本的另一个要点:

#ifndef MYDATESTRUCTURES_H
#define MYDATESTRUCTURES_H
    #include "myDataStructures.h"
#endif
这些预处理器条件应该放在myDataStructures.h文件中,而不是放在包含它的地方:

myDataStructures.h


如果myDataStructures.h文件从不同的头文件中多次包含,则这些包含保护旨在避免“多声明/定义”编译器错误。如果预处理器只看到一次代码,它将阻止再次呈现代码。

单引号和包含后缺少空格是怎么回事?请使用include myDataStructures。请注意引号使用不正确。是否有任何理由尝试使用两个搜索顺序三次包含iostream?如果murphy罢工,你可能会得到两个不兼容的副本…哦,如果你有更多的翻译单元源文件,包括头文件,你会得到多个函数的定义错误,无论任何包含。
 #include "myDataStructures.h"
#ifndef MYDATESTRUCTURES_H
#define MYDATESTRUCTURES_H
    #include "myDataStructures.h"
#endif
#ifndef MYDATESTRUCTURES_H
#define MYDATESTRUCTURES_H

#include <iostream>

int myAdd1(int, int);
int myAdd2(int, int, int, int, int);

// ...

#endif