为什么不能胜任这项工作(C ++ Function Prototypes)

时间:2017-01-01 01:02:20

标签: c++ function

所以我在这里得到了这么一小段代码:

#include "stdafx.h"
#include <iostream>


using namespace std;

void WhyDoesThisNotWork();



int main()
{
    void WhyDoesThisNotWork();

    return 0;
}

void WhyDoesThisNotWork()
{
    cout << "Why don't you just print this for god's sake?" << endl;
}

我真的不明白为什么它不会在屏幕上打印我想要的东西。我甚至从我的书中复制了确切的代码,但它仍然没有按照我想要的那样做。为什么呢?

2 个答案:

答案 0 :(得分:3)

int main()
{
    void WhyDoesThisNotWork();

    return 0;
}

您可以在全局范围内转发声明函数的方式,也可以在函数范围内执行相同的操作。你刚刚做的是重新声明名为WhyDoesThisNotWork的函数,该函数不带参数并返回void。您可以多次声明一个函数。要打电话,你只需:

int main()
{
    WhyDoesThisNotWork();
    return 0;
}

答案 1 :(得分:2)

两行void WhyDoesThisNotWork();都是(正确的)函数声明(也称为“原型”)。你可以为同一个函数提供多个前向声明,而且你可以这样做。

您没有的是对该功能的调用。函数调用使用函数名称(或函数的指针)和任何参数的。该调用没有命名参数的类型或函数的类型返回自身。

double pow(double base, double exponent);
// ^^ has   ^^             ^^   types, is a declaration

 auto pow(double base, double exponent) -> double;
// ^^      ^^           ^^                  ^^
// same declaration using funny new "trailing return type" syntax, also has types.

pow(4.0, 4.5);
// ^^ no types, is a function call