`
jiangshuiy
  • 浏览: 340055 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C与C++的细微区别——省略形式参数名

 
阅读更多

一、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程序库导论》是一本深度探讨C++开发中的Boost库的专著。Boost库是C++社区公认的扩展标准库,它包含了大量的高效、高质量的可重用C++组件,旨在提升C++的灵活性、效率和可移植性。这本书面向...

    C语言与C++区别

    C语言与C++的区别,C语言的应用及其他

    C++标准库——自学教程与参考手册(第2版)英文版

    ### C++标准库——自学教程与参考手册(第2版)知识点详解 #### 一、书籍基本信息概述 《C++标准库——自学教程与参考手册(第2版)》是一本由Nicolai M. Josuttis编写的权威指南,旨在帮助读者深入理解并掌握C++...

    c++————————笔记

    根据提供的文档内容,我们可以归纳出一系列关于C++的重要知识点,这些知识点主要涵盖了C++的基础语法、数据类型、内存管理、程序结构以及高级特性如类、继承与多态等。下面将详细阐述这些知识点: ### 1. 引言 C++...

    数据结构 C++语言描述——应用标准模板库(STL)(第2版)源代码

    本书是Ford和Topp两位教授于1996年出版的名著Data Structures with C++的第2版,新版中引入了在ANSI C 1998中正式规定的标准模板库(STL)来讲授数据结构,在全球范围内已经有数以万计的学生从中受益。 作者将C++...

    c++趣味入门——扫雷

    c++趣味入门——扫雷

    《C++语言描述——数据结构算法与应用》

    《C++语言描述——数据结构算法与应用》是一本深入探讨C++编程语言在数据结构和算法应用方面的专业书籍。本书旨在帮助读者理解和掌握如何利用C++高效地实现各种数据结构和算法,从而提升编程技能和解决问题的能力。...

    《Android C++高级编程——使用NDK》_源码.zip

    《Android C++高级编程——使用NDK》提供了Java原生接口(JNI)的概述、Bionic API、POSIX 线程和套接字、C++支持、原生图形和声音API以及NEON/SIMD优化,在一个游戏应用案例的帮助下,你将学到很多关键技能。...

    Android C++高级编程——使用NDK完整版

    第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++全部内容"的压缩包文件,提供了全面的学习资源,适合初学者和进阶者深入理解C++的核心概念和技术。 首先,我们从文件名中可以看出,这些课件覆盖了C++的基本到高级的主题: 1. **第二...

    c++小板接球——多球版.cpp

    c++小板接球——多球版.cpp

    象棋 c++ 写的 ——————

    在本文中,我们将深入探讨如何使用C++编程语言来实现一个功能完备的MFC(Microsoft Foundation Classes)象棋程序。MFC是微软提供的一套面向对象的类库,用于简化Windows应用程序的开发,它基于C++,并封装了Windows...

    Visual C++程序设计——基础与实例分析源代码

    《Visual C++程序设计——基础与实例分析源代码》是一本深入浅出的教程,旨在帮助初学者和进阶者掌握Visual C++编程技术。这本书通过丰富的实例,详细讲解了Visual C++的基础知识和实际应用,是学习C++在Windows平台...

    C++课程设计——个人财务管理

    C++课程设计——个人财务管理,作为大学课程设计挺不错的,希望对大家有帮助。

    基于C++实现FFT ——数字信号处理

    基于C++实现FFT ——数字信号处理 ,现成的序列有:正弦 三角 矩形 采样

    C++程序设计教程——设计思想与实现习题代码答案

    《C++程序设计教程——设计思想与实现习题代码答案》是一本面向初学者和有一定基础的程序员的教育性资源,旨在帮助读者深入理解和掌握C++编程语言。这本书结合了作者两年的教学实践经验,使得内容既理论严谨又贴近...

    《C++语言描述——数据结构算法与应用》高清版

    对于那些希望提升自身软件开发能力的人来说,《C++语言描述——数据结构算法与应用》这本书无疑是一盏明灯,指引他们深入探索C++编程语言如何在数据结构与算法的海洋中航行。 本书不仅是数据结构教材的又一次升华,...

Global site tag (gtag.js) - Google Analytics