C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义
一直都以为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++的函数声明中省略参数的不同意义相关推荐
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(三)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(三) 目录 3. 参数微调案例/Parameter Tunin ...
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(二)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(二) 目录 2. xgboost参数/XGBoost Para ...
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(四)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(四) 目录 Step 3: Tune gamma步骤3:伽马微 ...
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(一)
ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(一) 目录 概述/Overview 介绍/Introducti ...
- python 定义函数参数的类型_1作为函数声明中的参数类型 - python
如果在我的示例中需要在Python数组中指定参数类型,则需要编写如下内容: def my_function(param: list): pass 在Swift中,您可以这样指定参数类型: func m ...
- 自动装配——@Autowired 构造器,参数,方法,属性都是从容器中获取参数组件的值||自定义组件想要使用Spring容器底层的一些组件 ApplicationContext,BeanFactory
@Autowired:构造器,参数,方法,属性:都是从容器中获取参数组件的值 * 1).[标注在方法位置]:@Bean+方法参数:参数从容器中获取;默认不写@Autowired效果是一样的:都能自动装 ...
- c语言中函数名可变,C语言中可变参数函数
转帖两封: 首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理. 一.printf函数的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++ ...
- java方法带参数返回值_Java方法中的参数太多,第6部分:方法返回
java方法带参数返回值 在当前的系列文章中,我正在致力于减少调用Java方法和构造函数所需的参数数量,到目前为止,我一直专注于直接影响参数本身的方法( 自定义类型 , 参数对象 , 构建器模式 , ...
- Tk 标签Label下image参数直接调用包含 ImageTk.PhotoImage 的函数时,图片不显示问题
一:背景 由于标签Label中image参数无法直接使用非gif的图片,所以使用PIL(Python Image Library)库实现非gif图片的使用. 二:修改前的代码 #coding=utf- ...
最新文章
- Kali Linux 2020.1修改root用户密码
- CPU的插槽类型LGA与Socket 的区别
- ADO.NET连接字符串
- 【Boost】boost库中thread多线程详解12——线程的分离与非分离
- Lync Server外部访问系列PART6:启用外部访问
- tornado 获取html,python使用tornado实现简单爬虫
- “前端+应用”两大监控利器商业化首发 ARMS领跑APM市场
- jeecg开源社区近期版本发布计划
- 机器学习笔记(五)回归模型
- CSDN《程序员》杂志创始人 蒋涛推荐《程序员求职第一书》
- c语言求一点到多点最短路径长度,C语言迪杰斯特拉实现最短路径算法(14页)-原创力文档...
- 膨胀、腐蚀、开、闭运算——数字图像处理中的形态学
- UTM投影坐标计算距离
- 南航计算机学院考研的专业课,【南航计算机考研】南航计算机考研经验贴
- 国内外知名PT站点最全汇总,含各站内截图及站点链接【转载】
- STM32单片机Flash模拟EEPROM
- ppt转换成pdf免费软件
- java 吸血鬼数字_用java求吸血鬼数字 | 学步园
- 什么是linux手机软件?
- html+css写三角形
热门文章
- 数据挖掘开源项目立项
- Mybatis中 sequence不能自增长
- 百度首席科学家吴恩达宣布将从百度离职
- KUKA通信 CREAD问题
- win10+tensorflow import cv2 bug解决
- java utf 8 转unicode_java 在Unicode和UTF-8之间转换
- 常用事务代码 sap_SAP_PS_事务代码
- asp.net mvc使用mysql_ASP.NET开发实战——(八)ASP.NET MVC 与数据库之MySQL
- Jackson学习笔记
- xunsearch安装使用