【发布时间】:2020-12-17 15:47:53
【问题描述】:
#include < iostream >
#include "main.h"
int main() {
std::cout << "x + y is: " << getInteger() << std::endl;
return 0;
}
int getInteger(int x, int y){
std::cout << "Enter an integer: ";
std::cin >> x;
std::cin >> y;
return x + y;
}
“main.h”文件包含在与函数相同的源文件中,包含以下代码:
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
int getInteger(int x, int y);
#endif // MAIN_H_INCLUDED
我不知道为什么文件的标题后面是大写的“包含”,这只是我通过IDE创建头文件后出现的默认格式。
当我尝试构建此功能时,我收到以下错误:
error: too few arguments to function 'int getInteger(int, int)'
【问题讨论】:
-
前向声明工作正常,但是一个名为
getInteger的函数接受 2 个参数与一个名为getInteger的函数完全不同,它不接受任何参数。此外,那些有趣的INCLUDED行被称为header guards。 -
我试过放 2 个参数或零,错误仍然存在。现在我已经添加了两个参数,但它已经改变了,error:expected primary expression before 'int'。
-
"我不知道为什么文件的标题后面是大写的“包含”" - 它被称为header guard。
-
在我看来,
getInteger有任何参数都是错误的。该函数不需要任何外部输入,它从std::cin获取值。 -
错误信息 "error: too many arguments to function 'int getInteger(int, int)'" 表明编译器确实找到了你的前向声明,否则它不会知道
getInteger应该有多少个参数。您只是在main中错误地使用了getInteger。
标签: c++ file header format declaration