首页 > 解决方案 > 为什么我的 C++ 函数只有放在 main() 之后才起作用?

问题描述

我最近学习了 C++,并决定尝试制作一个函数。但是,我的函数遇到了一个问题func(),即使事先声明,它也只有放在main()函数之前才有效。

如果我把它放在main()函数之后,系统会告诉我“没有匹配的函数调用func”。

注意:func2另一方面,即使放置在函数之前或之后,该main()函数也可以工作。

所以这里是代码:

#include <stdio.h>
#include <iostream>

void func2();

int func();

int main()
{
  int y=2;

  std :: cout << "Hello World\n" << func(y) << "\n";
  func2();
  return 0;
}

int func(int x)
{
 x *= 2;
 return x;
}

void func2()
{
 std :: cout << "Hello there";
}

标签: c++functionmain

解决方案


在 C 语言中,声明int func();是指具有未指定数量的任何类型的参数的函数,返回一个 int.

在 C++ 语言中,相同的声明int func();意味着一个没有任何参数的函数,返回一个 int.

因此,在 C++ 中,func带有类型参数的定义int重载。对于编译器来说,它是一个不同的函数,它在原始代码中没有在使用前声明,所以会发出错误。

但在 C 中,这将是完全合法的。


推荐阅读