抱中守一 2024-03-11 11:56 采纳率: 0%
浏览 5

关于#c++#的问题:函数写在主函数后面,现在把函数注释了还是能输出结果(相关搜索:函数声明)

今天在弄函数声明的时候,发现了这样一个问题,函数写在主函数后面,未进行声明,依然有输出结果,现在把函数注释了还是能输出结果。

img

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-11 11:56
    关注

    引自免费微信小程序:皆我百晓生

    在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函数的定义部分,那么在编译阶段虽然不会出错(因为有声明),但在链接阶段会由于找不到函数定义而报错。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月11日

悬赏问题

  • ¥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时报错了如何解决?