一、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++编程语言在数据结构和算法应用方面的专业书籍。本书旨在帮助读者理解和掌握如何利用C++高效地实现各种数据结构和算法,从而提升编程技能和解决问题的能力。...
《Android C++高级编程——使用NDK》提供了Java原生接口(JNI)的概述、Bionic API、POSIX 线程和套接字、C++支持、原生图形和声音API以及NEON/SIMD优化,在一个游戏应用案例的帮助下,你将学到很多关键技能。...
第3章 用jni实现与原生代码通信 57 第4章 使用swig自动生成jni代码 81 第5章 日志、调试及故障处理 111 第6章 bionic api入门 135 第7章 原生线程 155 第8章 posix socket api:面向连接的通信 183 第9章 posix ...
这份"C++课件完整——包含C++全部内容"的压缩包文件,提供了全面的学习资源,适合初学者和进阶者深入理解C++的核心概念和技术。 首先,我们从文件名中可以看出,这些课件覆盖了C++的基本到高级的主题: 1. **第二...
c++小板接球——多球版.cpp
在本文中,我们将深入探讨如何使用C++编程语言来实现一个功能完备的MFC(Microsoft Foundation Classes)象棋程序。MFC是微软提供的一套面向对象的类库,用于简化Windows应用程序的开发,它基于C++,并封装了Windows...
《Visual C++程序设计——基础与实例分析源代码》是一本深入浅出的教程,旨在帮助初学者和进阶者掌握Visual C++编程技术。这本书通过丰富的实例,详细讲解了Visual C++的基础知识和实际应用,是学习C++在Windows平台...
C++课程设计——个人财务管理,作为大学课程设计挺不错的,希望对大家有帮助。
基于C++实现FFT ——数字信号处理 ,现成的序列有:正弦 三角 矩形 采样
《C++程序设计教程——设计思想与实现习题代码答案》是一本面向初学者和有一定基础的程序员的教育性资源,旨在帮助读者深入理解和掌握C++编程语言。这本书结合了作者两年的教学实践经验,使得内容既理论严谨又贴近...
对于那些希望提升自身软件开发能力的人来说,《C++语言描述——数据结构算法与应用》这本书无疑是一盏明灯,指引他们深入探索C++编程语言如何在数据结构与算法的海洋中航行。 本书不仅是数据结构教材的又一次升华,...