2011-04-27 96 views
0

可能重复:
Does C support overloading ?printf支持函数重载在C中?

我想,要知道,如果printf的支持功能,使用C超载,因为相同的printf函数可以在不止一种方式在一个C程序中使用。

+2

你的问题是根本不清楚。请给出一个代码示例,说明您希望能够做什么。 – 2011-04-27 10:06:39

+1

printf使用可变参数列表。它与函数重载不一样。 – forsvarir 2011-04-27 10:08:17

+0

这是一个阅读问题,尽管措辞很差。 – 2011-04-27 10:09:08

回答

3

printf() C是一个可变函数,它可以被认为是一种重载形式。与C++,Java,C#等语言中的重载函数不同,一个可变参数函数不是类型安全的,这就是为什么他们有些不悦。

+1

我只想downvote,variadic函数和函数重载是非常不同的东西(只有一个printf函数,而不是不同的实现取决于参数)。你滑动的边缘与你的“可以被认为是”:) :) – 2011-04-27 10:12:11

+2

@Binary各种各样的事情可以被认为是最通用形式的重载。如果你想把重载作为严格意义上的C++重载函数,那么没有什么不同。但正如多元主义可能意味着很多事情一样,超载也是如此。 – 2011-04-27 10:14:41

+1

同意,但是我可以将猫和狗视为最常用形式的“动物”,但它不会帮助我的爱尔兰猎狼犬抓住老鼠:)只是说我认为_这种情况比一般人更具体。 。 。不幸的是,我不拥有爱尔兰猎狼犬。 – 2011-04-27 10:58:33

1

C没有基于签名的多态性,所以你不能这样做。有几种方法可以列出here

更重要的问题是为什么你会想这样做?为什么printf对你来说不够通用?

7

如果你的意思

printf("something: %d\n", number); 
printf("something else: %d, %s\n", number, string); 

此无关超载的区别。这只是一个 variadic function

2

如果你问如何printf采取不同的数量和类型的论证,然后不,它不是函数重载。函数可以被定义为可变参数列表。

stdarg.h与可变arguement工作列出