C与C++的细微区别——省略形式参数名
来源:互联网 发布:南宁哪有美工勾刀卖 编辑:程序博客网 时间:2024/05/21 19:09
一、C与C++的细微区别
在函数声明中:
无论是C还是在C++,都可以省略形式参数名。
但是,通常都不建议省略形式参数名。
在函数定义中:
1. 当需要使用形式参数的时候,显然,必须给形式参数命名。
2. 当不需要使用形式参数的时候,C与C++有微小差异:
—— C不能省略形式参数名, 即使不使用。
—— C++可以省略形式参数名,如果不使用。
—— 并且在C++中,如果给不使用的形式参数命名,可能会得到一个警告。
二、示例:
三、三个函数分别实现如下:
三、1
——在C中是错误:
1. msvc :
error C2055: expected formal parameter list, not a type list
error C2055: 应输入形参表,而不是类型表
2. gcc : (报错更清晰一些)
error: parameter name omitted
错误: 省略参数名
——在C++中正确,且无警告。
三、2
在C和C++中都正确,但可能得到一个警告:
1. msvc :
warning C4100: 'name' : unreferenced formal parameter
warning C4100: “name”: 未引用的形参
2. gcc :
warning: unused parameter 'name'
警告: 未使用的参数‘name’
在gcc中,打开这个警告的选项是-Wunused-parameter。
该选项包含在-Wall中。
三、3
在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* 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;
}
三、三个函数分别实现如下:
三、1
void greeting_omit(const char* ) {
printf("hello world\n");
}
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++中正确,且无警告。
三、2
void greeting_unuse(const char* name) {
printf("hello Cherrie\n");
}
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中。
三、3
void greeting_nowarning(const char* name) {
(void)name;
printf("hello OwnWaterloo\n");
}
(void)name;
printf("hello OwnWaterloo\n");
}
在C和C++中都正确,并且无警告。
0 0
- C与C++的细微区别——省略形式参数名
- C与C++的细微区别——省略形式参数名
- C与C++的细微区别——省略形式参数名
- C——指针与数组名的区别
- 【C语言】指针--可省略函数名的函数
- Object-C中编写省略参数的多参数函数
- C数组名与指针的区别
- C语言中数组名与&数组名的区别
- C指针与数组两种形式的区别
- C语言字符数组的两种形式与区别
- C/C 数组名与指针区别
- C常见问题之字符串的数组形式与指针形式的区别
- C语言函数的参数传递形式
- c语言指针的形式参数
- C/C++数组名与指针的区别
- C语言-函数指针与函数名的区别
- C语言-函数指针与函数名的区别
- C++ VS C#(11):结构体和对象的细微区别
- firebreath使用
- VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall
- x++ ++x 问题
- Java 多线程状态图
- Spring FAQ
- C与C++的细微区别——省略形式参数名
- 用缓冲运动框架实现对联特效
- js通过ajax向action提交数据,并通过回调显示数据
- PowerShell Background Jobs
- 如何配置python环境变量
- 柯震东在大陆这次会挺过去么
- Java内存布局【图】以及java各种存储区【详解】
- 我的备战记录
- Python软件包的配置