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,一经查实,立即删除!

相关文章

常见的CSS和HTML面试题

1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? 浏览器:IE,Chrome,FireFox,Safari,Opera。 内核:Trident,Gecko,Presto,Webkit。 2. 说下行内元素和块…

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

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

C语言位运算

一、位运算符&#xff23;语言提供了六种位运算符&#xff1a;& 按位与| 按位或^ 按位异或~ 取反<< 左移>> 右移1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时&#xff0…

c语言运行后没生成exe,这个程序怎么运行?为什么显示没有exe??

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include #include #include void main(){void welcome();void over(int x);void state();void score(int x);void hp(int x);welcome();state();char key;int x, y,a,m;int sc 0,wc 0;srand(time(NU…

网络工程师之广域网必胜篇一

完全没有必要看网工的教程&#xff0c;仔细阅读完以下篇幅&#xff0c;基本上能够应付网工的考试了&#xff0c;注意&#xff0c;一定要是仔细阅读。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />广域网广域网&#xff08;WAN…

POJ2243 Knight Moves —— A*算法

题目链接&#xff1a;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…

c语言多重括号,大佬在吗,我用C写了一个去多重括号的函数,结果。。。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include "malloc.h"char * changeOrder(char *s);struct Node{char *data;struct Node * link;};struct Node * top1 NULL;struct Node * top2 NULL;void Push1(char *s){struct Node * temp (str…

mac配置telnet

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

linux下的DNS服务器详解

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

c语言一个循环重新输入密码,想程序高手求助--用C语言来编辑一个输入密码的程序...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*--------实现密码的隐式输入-----------------*/inputpw(char *password,int len) /*len为密码长度*/{int i0; /*密码数组索引值,同时也表示记录已显示*的数目*/char ch;fflush(stdin); /*清洗流&#xff0c;以防妨碍密码正确输入…

怎样玩转千万级别的数据

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

c语言多维数组基础知识,C语言基础第7章多维数组.ppt

C语言基础第7章多维数组7.2 二维数组及多维数组二维数组的定义定义方式&#xff1a;  数据类型 数组名[常量表达式][常量表达式]&#xff1b;;二维数组理解;二维数组元素的引用形式&#xff1a; 数组名[下标][下标]二维数组元素的初始化分行初始化&#xff1a;;程序举例;例 …

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

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

如何制作pem公钥证书和私钥证书

1.先下载openssl 下载地址 https://pan.baidu.com/s/1kUK1MJX 2.下载之后保存在某个盘里&#xff08;例如在F:/cer/openssl&#xff09; 3.打开windows的 cmd&#xff0c;切换到目录 F:/cer/openssl/openssl\bin 4.生成商户RSA私钥(执行如下命令) openssl genrsa -out rsa_…

苏州大学电子信息学院C语言,电子信息学院

专著Z. Zhu and A. K. Nandi, (2014) Automatic Modulation Classification - Principles, Algorithms, and Applications. Wiley (to be published in January 2015)期刊论文Z. Zhu, A. K.Nandi, (2014) Blind Digital Modulation Classification using Minimum Distance Cent…

网络协议集合2

这张是更加详细的网络协议图&#xff0c;希望会对学习有一定作用。学习网络知识&#xff0c;一定要打好框架&#xff0c;做到心中有“图”&#xff0c;通常我们只是接触TCP/IP协议&#xff0c;但对于其他体系和结构&#xff0c;也应当有所了解&#xff0c;这样能更好地理解网络…