函数重载在 C 中有效吗? [复制]

Posted

技术标签:

【中文标题】函数重载在 C 中有效吗? [复制]【英文标题】:Does function overloading work in C? [duplicate] 【发布时间】:2011-03-14 11:30:18 【问题描述】:

可能的重复:function overloading in CDoes C support overloading ?

谁能解释一下函数重载在 C 中是否有效?

我试过了,没用:

#include <stdio.h>

int f(int val) 
    printf("f int\n");
    return 5;


int f(char *val) 
    printf("f char *\n");
    return 6;


int main() 
    f(5);
    f("moo");

gcc C 编译器说:

overload.c:8: error: conflicting types for 'f'
overload.c:3: error: previous definition of 'f' was here

但是,如果我用 C++ 编译相同的代码,它就可以工作。

谁能解释一下?

谢谢,博达·赛多。

【问题讨论】:

不,C 不支持重载函数。这两种语言非常不同。 更多***.com/questions/2351792/does-c-support-overloading的副本 【参考方案1】:

不,C 没有函数重载。

【讨论】:

【参考方案2】:

函数重载是 C++ 的附加特性之一,通常被描述为“C++ 作为更好的 C”。

这与 C++ 的面向对象特性无关。

【讨论】:

以上是关于函数重载在 C 中有效吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

你在 JavaScript 中使用“假”函数重载吗? [复制]

C 有函数覆盖吗? [复制]

函数重载与函数模板 - C++

c++中拷贝构造函数和赋值运算符重载本质上一样么

C++复制构造函数和=号重载问题

c++中重载输出操作符,为啥要返回引用