声明范围时出错

时间:2017-04-05 21:09:52

标签: c++ scope declare

我在为我的介绍编码课完成一项作业时遇到了一些麻烦。我在编译时不断收到错误,“[错误]'displayBills'未在此范围内声明。我将附上我的代码,任何建议都将不胜感激,谢谢!

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int dollars;
cout << "Please enter the whole dollar amount (no cents!).  Input 0 to terminate: ";
cin >> dollars;
while (dollars != 0)
    {
    displayBills(dollars);
    cout << "Please enter the a whole dollar amount (no cents!).  Input 0 to terminate: ";
    cin >> dollars;
    }
return 0;
}

displayBills(int dollars)
{
int ones;
int fives;
int tens;
int twenties;
int temp;

twenties = dollars / 20;
temp = dollars % 20;
tens = temp / 10;
temp = temp % 10;
fives = temp / 5;
ones = temp % 5;

cout << "The dollar amount of ", dollars, " can be represented by the following monetary denominations";
cout << "     Twenties: " << twenties;
cout << "     Tens: " << tens;
cout << "     Fives: " << fives;
cout << "     Ones: " << ones;
}

3 个答案:

答案 0 :(得分:0)

您没有为displayBills函数指定转发声明。您必须在调用之前指定一个或放置您的函数。

答案 1 :(得分:0)

在函数main中,调用函数displayBills,但编译器此时不知道此函数(因为它在文件的后面声明/定义)。

displayBills(int dollars) { ...的定义放在函数main之前,或者在函数main之前至少放置此函数的前向声明:

displayBills(int dollars);  // Forward declaration; implementation may follow later on;
// Tells the compiler, that function `displayBills` takes one argument of type `int`.
// Now the compiler can check if calls to function `displayBills` have the correct number/type of arguments.

int main() {
   displayBills(dollars);  // use of function; signature is now "known" by the compiler
}

displayBills(int dollars) {  // definition / implementation
  ...
}

顺便说一下:您的代码中有几个问题需要注意,例如: using namespace std通常是危险的,因为意外的名称冲突,函数应该有一个明确的返回类型(或应该是void),...

答案 2 :(得分:0)

就像其他人一直说将displayBills置于main之上将有助于解决您的问题。但是也在名为displayBills.h和

的头文件中声明displayBills
#ifndef DISPLAYBILLS_H_INCLUDED
#define DISPLAYBILLS_H_INCLUDED

displayBills(int dollars);
#endif DISPLAYBILLS_H_INCLUDED

然后你可以有一个displayBills.cpp的cpp文件,在那里你将定义函数displayBills(别忘了包含displayBills.h)

 #include "displayBills.h"

并将其从主函数下移动到自己的cpp文件。然后在主函数上方包含头文件。

我会这样做,因为它可以更容易地了解项目中的哪些功能,而不是将所有功能都干扰到主体中。