一、C与C++的细微区别
在函数声明中:
无论是C还是在C++,都可以省略形式参数名。
但是,通常都不建议省略形式参数名。
在函数定义中:
1. 当需要使用形式参数的时候,显然,必须给形式参数命名。
2. 当不需要使用形式参数的时候,C与C++有微小差异:
—— C不能省略形式参数名, 即使不使用。
—— C++可以省略形式参数名,如果不使用。
—— 并且在C++中,如果给不使用的形式参数命名,可能会得到一个警告。
二、示例:
#include <stdio.h>
void greeting_omit(const char* name);
void greeting_unuse(const char* name);
void greeting_nowarning(const char* name);
int main(void) {
greeting_omit("");
greeting_unuse("");
greeting_nowarning("");
(void)getchar();
return 0;
}
三、三个函数分别实现如下:
void greeting_omit(const char* ) {
printf("hello world\n");
}
——在C中是错误:
1. msvc :
error C2055: expected formal parameter list, not a type list
error C2055: 应输入形参表,而不是类型表
2. gcc : (报错更清晰一些)
error: parameter name omitted
错误: 省略参数名
——在C++中正确,且无警告。
void greeting_unuse(const char* name) {
printf("hello Cherrie\n");
}
在C和C++中都正确,但可能得到一个警告:
1. msvc :
warning C4100: 'name' : unreferenced formal parameter
warning C4100: “name”: 未引用的形参
2. gcc :
warning: unused parameter 'name'
警告: 未使用的参数‘name’
在gcc中,打开这个警告的选项是-Wunused-parameter。
该选项包含在-Wall中。
void greeting_nowarning(const char* name) {
(void)name;
printf("hello OwnWaterloo\n");
}
在C和C++中都正确,并且无警告。
原文链接 - http://www.cppblog.com/ownwaterloo/archive/2009/04/26/omit_parameter_name.html
分享到:
相关推荐
《超越C++标准库——Boost程序库导论》是一本深度探讨C++开发中的Boost库的专著。Boost库是C++社区公认的扩展标准库,它包含了大量的高效、高质量的可重用C++组件,旨在提升C++的灵活性、效率和可移植性。这本书面向...
C语言与C++的区别,C语言的应用及其他
### C++标准库——自学教程与参考手册(第2版)知识点详解 #### 一、书籍基本信息概述 《C++标准库——自学教程与参考手册(第2版)》是一本由Nicolai M. Josuttis编写的权威指南,旨在帮助读者深入理解并掌握C++...
根据提供的文档内容,我们可以归纳出一系列关于C++的重要知识点,这些知识点主要涵盖了C++的基础语法、数据类型、内存管理、程序结构以及高级特性如类、继承与多态等。下面将详细阐述这些知识点: ### 1. 引言 C++...
本书是Ford和Topp两位教授于1996年出版的名著Data Structures with C++的第2版,新版中引入了在ANSI C 1998中正式规定的标准模板库(STL)来讲授数据结构,在全球范围内已经有数以万计的学生从中受益。 作者将C++...
《C++语言描述——数据结构算法与应用》是一本深入探讨C++编程语言在数据结构和算法领域的专著。本书以其清晰的阐述和丰富的实例,为读者提供了全面且深入的数据结构理论与实践知识,旨在帮助程序员提升在软件开发中...
在本文中,我们将深入探讨如何使用C++编程语言来实现一个功能完备的MFC(Microsoft Foundation Classes)象棋程序。MFC是微软提供的一套面向对象的类库,用于简化Windows应用程序的开发,它基于C++,并封装了Windows...
在这个"**C++工具类——动画Demo**"中,我们看到一个利用Boost库实现的动画类,这为开发者提供了一种高效且灵活的方式来创建动态效果。Boost是一个流行的C++库集合,它包含了许多实用的工具和组件,可以增强标准库的...
C++课程设计——计算器.doc
《Visual C++程序设计——基础与实例分析源代码》是一本深入浅出的教程,旨在帮助初学者和进阶者掌握Visual C++编程技术。这本书通过丰富的实例,详细讲解了Visual C++的基础知识和实际应用,是学习C++在Windows平台...
C++课程设计——个人财务管理,作为大学课程设计挺不错的,希望对大家有帮助。
本书是Ford和Topp两位教授于1996年出版的名著Data Structures with C++的第2版,新版中引入了在ANSI C 1998中正式规定的标准模板库(STL)来讲授数据结构,在全球范围内已经有数以万计的学生从中受益。 作者将C++...
《C++程序设计教程——设计思想与实现习题代码答案》是一本面向初学者和有一定基础的程序员的教育性资源,旨在帮助读者深入理解和掌握C++编程语言。这本书结合了作者两年的教学实践经验,使得内容既理论严谨又贴近...
C++课程设计——课程设计宾馆客房管理系统(源代码+课设报告+详细注释) 实现功能如下: 1、输入用户名和密码 2、选择服务类型: ①订房;②入住;③退房;④查询; 本系统设置了80个房间,其中房间分四个等级,每...
C/C++课程设计——职工工作量统计系统(源代码): 功能包括: 1、职工基本信息输入; 2、输出信息; 3、工作量输入; 4、按工作量排序 打印出职工名次; 5、按职工工号查询; 6、按职工姓名查询; 7、按职工工号进行...
你知道端口扫描吗?侵入计算机,了解计算机网络服务类型,探寻端口弱点!需要完整视频和源码的,关注私信我。
在这个名为"C++小游戏——射击小行星源码"的项目中,我们主要探讨的是使用C++编程语言开发的一款简单射击游戏。游戏的核心概念是控制一艘飞船,抵御来自外太空的小行星撞击,通过射击来摧毁这些小行星。这个项目可以...