【问题标题】:Calling a function like declaring a variable像声明变量一样调用函数
【发布时间】:2014-04-01 02:11:27
【问题描述】:

我刚刚在一些代码中看到了类似的东西,我很惊讶它可以编译,谁能告诉我这是否有名字?

bool value()
{
    return true;    
}

int main()
{
   bool value(); //why does this work? What is it?
   return 0;
}

我的大脑告诉我,这是在内存中为函数腾出空间,但同时也是函数调用......好吧,这对我来说真的没有意义。

【问题讨论】:

  • 这不是一个调用,因为你会看到函数是否输出了一些东西。其实编译器could tell you是个什么东西。
  • 值得一提的是,它实际上并没有在运行时生成任何代码或做任何事情。如果value 函数是在源文件中的main() 之后定义的,这种事情主要是有用的,但是main 需要知道它的原型以便它可以调用它。恕我直言,这不是很好的做法...只需将value 定义在它所在的位置,然后从main() 中删除bool value(); 行。
  • 感谢@chris 和 Tony D。这很有道理。

标签: c++ c function


【解决方案1】:

这是函数value() 的声明。

通常我们不会将它放在函数中,但它在语法上是合法的。请记住,函数可以定义一次,但可以声明多次。

【讨论】:

  • 谢谢。这是有道理的,我很吃惊,因为我通常看不到在其他函数中声明的函数,并认为它正在做一些疯狂的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
相关资源
最近更新 更多