一直都以为C/C++中形如

int func();

这样的函数声明其意义就是一个参数 void(没有参数)的函数。然而今天在看C++的时候突然看到这么一句:

对于带空参数表的函数,C和C++有很大的不同。在C语言中,声明

int func2();

表示“一个可带任意参数(任意数目,任意类型)的函数”。这就妨碍了类型检查。而在C++语言中它就意味着“不带参数的函数”。

这一点老师并没有讲到,学校教科书里也没有提到,带着好奇心,我特意试了一下

test.c

#include

void fun();

int main()

{

fun(1, 1);

return 0;

}

void fun(int a, int b)

{

printf("%d\n", a+b);

}

编译通过

$ gcc -Wall test.c -o test

$ ./test

2

$ mv test.c test.cpp

$ g++ -Wall test.cpp -o test

test.cpp: 在函数‘int main()’中:

test.cpp:6:10: 错误:too many arguments to function ‘void fun()’

fun(1, 1);

^

test.cpp:3:6: 附注:在此声明

void fun();

^~~

这也解释了为什么主函数要写成这样的原因

int main(void)

C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义相关推荐

  1. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(三)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(三) 目录 3. 参数微调案例/Parameter Tunin ...

  2. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(二)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(二) 目录 2. xgboost参数/XGBoost Para ...

  3. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(四)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(四) 目录 Step 3: Tune gamma步骤3:伽马微 ...

  4. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(一)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(一) 目录 概述/Overview 介绍/Introducti ...

  5. python 定义函数参数的类型_1作为函数声明中的参数类型 - python

    如果在我的示例中需要在Python数组中指定参数类型,则需要编写如下内容: def my_function(param: list): pass 在Swift中,您可以这样指定参数类型: func m ...

  6. 自动装配——@Autowired 构造器,参数,方法,属性都是从容器中获取参数组件的值||自定义组件想要使用Spring容器底层的一些组件 ApplicationContext,BeanFactory

    @Autowired:构造器,参数,方法,属性:都是从容器中获取参数组件的值 * 1).[标注在方法位置]:@Bean+方法参数:参数从容器中获取;默认不写@Autowired效果是一样的:都能自动装 ...

  7. c语言中函数名可变,C语言中可变参数函数

    转帖两封: 首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理. 一.printf函数的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++ ...

  8. java方法带参数返回值_Java方法中的参数太多,第6部分:方法返回

    java方法带参数返回值 在当前的系列文章中,我正在致力于减少调用Java方法和构造函数所需的参数数量,到目前为止,我一直专注于直接影响参数本身的方法( 自定义类型 , 参数对象 , 构建器模式 , ...

  9. Tk 标签Label下image参数直接调用包含 ImageTk.PhotoImage 的函数时,图片不显示问题

    一:背景 由于标签Label中image参数无法直接使用非gif的图片,所以使用PIL(Python Image Library)库实现非gif图片的使用. 二:修改前的代码 #coding=utf- ...

最新文章

  1. Kali Linux 2020.1修改root用户密码
  2. CPU的插槽类型LGA与Socket 的区别
  3. ADO.NET连接字符串
  4. 【Boost】boost库中thread多线程详解12——线程的分离与非分离
  5. Lync Server外部访问系列PART6:启用外部访问
  6. tornado 获取html,python使用tornado实现简单爬虫
  7. “前端+应用”两大监控利器商业化首发 ARMS领跑APM市场
  8. jeecg开源社区近期版本发布计划
  9. 机器学习笔记(五)回归模型
  10. CSDN《程序员》杂志创始人 蒋涛推荐《程序员求职第一书》
  11. c语言求一点到多点最短路径长度,C语言迪杰斯特拉实现最短路径算法(14页)-原创力文档...
  12. 膨胀、腐蚀、开、闭运算——数字图像处理中的形态学
  13. UTM投影坐标计算距离
  14. 南航计算机学院考研的专业课,【南航计算机考研】南航计算机考研经验贴
  15. 国内外知名PT站点最全汇总,含各站内截图及站点链接【转载】
  16. STM32单片机Flash模拟EEPROM
  17. ppt转换成pdf免费软件
  18. java 吸血鬼数字_用java求吸血鬼数字 | 学步园
  19. 什么是linux手机软件?
  20. html+css写三角形

热门文章

  1. 数据挖掘开源项目立项
  2. Mybatis中 sequence不能自增长
  3. 百度首席科学家吴恩达宣布将从百度离职
  4. KUKA通信 CREAD问题
  5. win10+tensorflow import cv2 bug解决
  6. java utf 8 转unicode_java 在Unicode和UTF-8之间转换
  7. 常用事务代码 sap_SAP_PS_事务代码
  8. asp.net mvc使用mysql_ASP.NET开发实战——(八)ASP.NET MVC 与数据库之MySQL
  9. Jackson学习笔记
  10. xunsearch安装使用