今天在弄函数声明的时候,发现了这样一个问题,函数写在主函数后面,未进行声明,依然有输出结果,现在把函数注释了还是能输出结果。
5条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在C++中,函数的定义(即函数的实际实现)可以在调用它的代码之后。但是,如果在调用函数之前没有声明(即原型),编译器将会报错,因为它不知道这个函数的存在及其参数和返回类型。
然而,在您给出的例子中,第10行
cout<< max(a, b)<<endl;
能够正常工作,并且即使将函数max
注释掉后仍能输出结果,这是因为C++标准库已经提供了std::max
函数模板,它可以直接比较两个值并返回较大的那个。因此,这里实际调用的是std::max
而非你自己定义的max
函数。为了解决您的疑惑,假设我们确实想使用自定义的
max
函数,正确的做法是在主函数前声明该函数:#include<iostream> using namespace std; // 函数声明(原型) int max(int num1, int num2); int main() { int a = 40; int b = 20; cout << max(a, b) << endl; system("pause"); return 0; } // 函数定义 int max(int num1, int num2) { return num1 > num2 ? num1 : num2; }
这样,在调用
max(a, b)
时,编译器就能够找到匹配的函数声明,确保程序正确编译链接并执行。如果您注释掉了自定义max
函数的定义部分,那么在编译阶段虽然不会出错(因为有声明),但在链接阶段会由于找不到函数定义而报错。解决 1无用
悬赏问题
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥15 crossover21 ARM64版本安装软件问题
- ¥15 mymetaobjecthandler没有进入
- ¥15 mmo能不能做客户端怪物
- ¥15 osm下载到arcgis出错
- ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
- ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
- ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
- ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?