所以我在这里得到了这么一小段代码:
#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;
}
我真的不明白为什么它不会在屏幕上打印我想要的东西。我甚至从我的书中复制了确切的代码,但它仍然没有按照我想要的那样做。为什么呢?
答案 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