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