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)

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解快速生成树协议(RSTP)(二)

RSTP引进了新的BPDU处理以及一种新的拓扑结构改变机制。即使没有从根桥处接收到任何信号,每个网桥在每次“hello时间周期中”中都生成BPDU。BPDU扮演了在网桥间进行消息通知的角色。如果一个网桥不能从临近网桥处收到BPDU,它就会认为与这个网桥失去了连接…

POJ2243 Knight Moves —— A*算法

题目链接:http://poj.org/problem?id2243 Knight MovesTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 14500 Accepted: 8108Description A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the short…

mac配置telnet

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" brew install telnet

linux下的DNS服务器详解

DNS:Domain Name System 域名管理系统 域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,这一命名的方法或这样管理域名的系统叫做域名管理系统。 大家都知道,当我们在上网的时候,通常输入的是…

怎样玩转千万级别的数据

作者:Sam Xiaowww.cnblogs.com/xcj26/p/3305789.html如有好文章投稿,请点击 → 这里了解详情大数据处理是一个头疼的问题,特别当达不到专业DBA的技术水准时,对一些数据库方面的问题感到无奈。所以还是有必要了解一些数据库方面的技…

关于待机、休眠、睡眠的区别和优缺点

Windows中很早就加入了待机、休眠等模式,而Windows Vista中更是新加入了一种叫做睡眠的模式,可是很多人还是习惯在不使用电脑的时候 将其彻底关闭。其实充分利用这些模式,我们不仅可以节约电力消耗,还可以用尽可能短的时间把系统恢…

自定义权限 android,如何在Android中使用自定义权限?

蛊毒传说我创建了一个测试代码&#xff0c;您可以使用它并测试您的权限。有两个应用程序PermissionTestClient声明权限并使用此权限保护其活动。这是清单文件&#xff1a;<?xml version"1.0" encoding"utf-8"?> …

MYSQL在centos上主从配置

主从配置理论传送门:http://blog.csdn.net/hguisu/article/details/7325124 具体配置方案: 一&#xff1a;MYSQL主从配置 1.1 部署环境 主(master_mysql): 192.168.1.200 OS:CentOS 6.5 从(slave_mysql): 192.168.1.201 OS:CentOS 6.5 1.2 安装mysql 主和从: yu…

Android实现支付宝AR功能,Android RecyclerView 实现支付宝首页效果

Android RecyclerView 实现支付宝首页效果[TOC]虽然我本人不喜欢支付宝的,但是这个网格本身其实还是不错的,项目更新中更改了一个布局为网格模式,类似支付宝.(估计是产品抄袭的.,我不管设计,只管实现就好.)类名描述RecyclerView.Adapter托管数据集合&#xff0c;为每个Item创建…

android wear评测,android wear5.1怎么样 android wear5.1更新评测

android wear5.1更新评测触控和菜单改善新版android wear的用户界面得到了小幅度的改进。在屏幕上向下滑动会唤出重新设计的快捷菜单&#xff0c;当中包含着诸多应用程序和功能的快捷方式。而如果是向左滑动&#xff0c;屏幕上会显示出常用联系人&#xff0c;你可以点击他们的头…

ReactiveCocoa入门教程——第一部分

本文翻译自RayWenderlich,原文&#xff1a;ReactiveCocoa Tutorial--The Definitive Introduction: Part 1/2 作为一个iOS开发者&#xff0c;你写的每一行代码几乎都是在相应某个事件&#xff0c;例如按钮的点击&#xff0c;收到网络消息&#xff0c;属性的变化&#xff08;通过…

C# Android wifi控制灯,求助如何在基于安卓通过WiFi与Arduino通信,实现对LED灯的控制。...

满意答案dkmeng推荐于 2017.12.15采纳率&#xff1a;55% 等级&#xff1a;9已帮助&#xff1a;567人项目需要的硬件如下&#xff1a;Arduino UnoEthernet ShieldLED灯 2个.电阻 2个.面包板(可选)连接导线路由器一个项目要的连接管脚如下&#xff1a;LED 1 --> pin 6 to g…