包含自定义头文件时出现编译器错误
compiler error on including a custom made header file
晚上好,
你们中的一些人可能会认为这是一个愚蠢的问题。但我已经开始学习C++了,一切都很顺利,直到我遇到了这个困扰我好几天的错误。到目前为止,我已经在网络上做了一些研究,并修复了我能修复的一切。
问题是,当我试图包含我制作的新头文件时,编译器无法识别该文件的内容。我使用的是Dev-C++编译器。
当我尝试编译时,我得到了以下错误:main.cpp第8行错误:"test123"未声明(首先使用此函数)
我有一个名为001的文件夹,其中有另一个名称为src的文件夹(我在其中存储.h文件),以及main.cpp和new.cpp.
这是main.cpp的代码:
#include <iostream>
#include "src/functions.h"
using namespace std;
int main(){
test123(5,'Test String');
//close on enter keystroke
cin.clear();
cin.ignore(255,'n');
cin.get();
return 0;
}
这是函数中的代码。h:
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
string test123(int i,string inputStr);
#endif
以下是functions.cp:中的代码
#include "src/functions.h"
string test123(int n, inputStr){
for(int i=0;i<=n;i++){
cout << "nt"+inputStr <<endl;
}
}
- 在头中,变量必须声明为
extern
,然后在.cpp
文件中定义 functions.h
没有#include <string>
来提供函数test123
的返回类型- .cpp文件没有
#include <iostream>
来提供cout
-
您在functions.cpp.中没有
test123
定义的inputStr
参数的类型#ifndef FUNCTIONS_H_INCLUDED #define FUNCTIONS_H_INCLUDED #include <string> extern int testVar; std::string test123(int i, std::string inputStr); #endif
对于.cpp:
#include <iostream> #include "src/functions.h" using namespace std; int testVar = 123456; string test123(int n, string inputStr){ for(int i=0;i<=n;i++){ cout << "nt"+inputStr <<endl; } }
functions.cpp
不包括test123
返回的string
类型的定义;CCD_ 13的第二自变量不具有任何类型。这不可能编译。编译器可能会丢弃完全错误的test123
定义,从而在以后进行混乱的抱怨。但问题是声明不正确,如果编译器以前没有大声抱怨,我会非常惊讶。
如果你想在这里得到一些澄清,那么尝试将问题简化为一个尽可能小的程序来展示问题是值得称赞的,没有人会在一个他们真正不关心的程序中费力地浏览数百行无关的内容。但是,请确保确实编译了,或者几乎是这样,也确实显示了你想要建议的确切问题。确保任何让你困惑的编译器消息都是唯一的消息。
相关文章:
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 重载方法的方式会在使用临时调用时生成编译器错误
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 编译器错误:destuctor 的更宽松的抛出说明符
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- C++ G++ 编译器 - 错误:隐式声明的定义
- 这个失败的测试是将零添加到空指针未定义的行为、编译器错误还是其他什么?
- 模板模板参数和模板别名:编译器错误?
- C++ 编译器错误:P1LinkedList.cpp:145:错误:重载的"to_string(int&)"调用不明确
- 在gcc中意外调用了Const重载.编译器错误或兼容性修复程序
- C1001内部编译器错误是由于矢量初始化(如数组)引起的
- 编译器错误(英特尔并行工作室 2019 与 Visual Studio 社区 2019)
- 如何在C++中克服此 C4430 编译器错误?
- 尝试使用 WinBGI 显示文本时出现编译器错误
- 使用typedef'ed返回类型声明友元函数时出现编译器错误
- 如何在类模板的成员函数中正确调用函数对象?正在生成 Visual Studio 编译器错误 C2440
- C++自定义分配器大小参数作为模板参数会引发编译器错误