C中如何实现C++中的默认参数?

简介:

先看一下C++中的默认参数实现

 
void Test(int x = 1, int y = 2, int z = 3)
{
    cout << x << ", " << y << ", " << z << endl ;
}
 
int main(void)
{
    Test() ;
    Test(10) ;
    Test(10, 20) ;
    Test(10, 20, 30) ;
 
    system("pause") ;
    return 0 ;
}

如何在C中实现这种效果呢?目前只找到一种方法,宏定义,遗憾的是不能使用同一个函数名了

 
#define Test0() Test(1, 2, 3)
#define Test1(x) Test(x, 2, 3)
#define Test2(x, y) Test(x, y, 3)
#define Test3(x, y, z) Test(x, y, z)
 
void Test(int x, int y, int z)
{
    cout << x << ", " << y << ", " << z << endl ;

}


本文转自zdd博客园博客,原文链接:http://www.cnblogs.com/graphics/archive/2010/07/14/1777010.html,如需转载请自行联系原作者

相关文章
|
8月前
|
C++
【C++】缺省参数(默认参数)
【C++】缺省参数(默认参数)
76 3
|
8月前
|
存储 算法 程序员
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
402 3
|
8月前
|
算法 安全 编译器
【C++ 泛型编程 进阶篇】C++模板参数推导的场景分析
【C++ 泛型编程 进阶篇】C++模板参数推导的场景分析
111 0
【C++ 泛型编程 进阶篇】C++模板参数推导的场景分析
|
2月前
|
安全 编译器 C++
【C++11】可变模板参数详解
本文详细介绍了C++11引入的可变模板参数,这是一种允许模板接受任意数量和类型参数的强大工具。文章从基本概念入手,讲解了可变模板参数的语法、参数包的展开方法,以及如何结合递归调用、折叠表达式等技术实现高效编程。通过具体示例,如打印任意数量参数、类型安全的`printf`替代方案等,展示了其在实际开发中的应用。最后,文章讨论了性能优化策略和常见问题,帮助读者更好地理解和使用这一高级C++特性。
74 4
|
3月前
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
102 2
|
8月前
|
算法 程序员 C++
【C/C++ 泛型编程 应用篇】C++ 对多参数的参数包的 参数类型提取 应用
【C/C++ 泛型编程 应用篇】C++ 对多参数的参数包的 参数类型提取 应用
136 5
|
4月前
|
程序员 C++ 容器
C++编程基础:命名空间、输入输出与默认参数
命名空间、输入输出和函数默认参数是C++编程中的基础概念。合理地使用这些特性能够使代码更加清晰、模块化和易于管理。理解并掌握这些基础知识,对于每一个C++程序员来说都是非常重要的。通过上述介绍和示例,希望能够帮助你更好地理解和运用这些C++的基础特性。
55 0
|
6月前
|
算法 编译器 程序员
C++为什么有参数依赖查找(ADL)?
为什么在限定名称查找和非限定名称查找之外,C++还要提供参数依赖查找这样的机制呢?它其实是在规范的查找框架下,提供了一种灵活性的补充
|
6月前
|
编译器 C++ 容器
C++一分钟之-可变模板参数与模板模板参数
【7月更文挑战第21天】C++的模板实现泛型编程,C++11引入可变模板参数和模板模板参数增强其功能。可变模板参数(如`print`函数)用于处理任意数量的参数,需注意展开参数包和递归调用时的处理。模板模板参数(如`printContainer`函数)允许将模板作为参数,需确保模板参数匹配和默认值兼容。这些特性增加灵活性,但正确使用是关键。
65 4