有没有办法在C中实现函数重载?我正在寻找简单的函数来重载像
foo (int a)
foo (char b)
foo (float c , int d)
Run Code Online (Sandbox Code Playgroud)
我认为没有直接的方式; 我正在寻找解决方法,如果存在的话.
任何人都可以解释函数重载是否在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");
}
Run Code Online (Sandbox Code Playgroud)
gcc C编译器说:
overload.c:8: error: conflicting types for 'f'
overload.c:3: error: previous definition of 'f' was here
Run Code Online (Sandbox Code Playgroud)
但是,如果我在C++中编译相同的代码,它的工作原理.
有人能解释一下吗?
谢谢,Boda Cydo.
C的printf
函数似乎显示方法重载,因为可以给它不同类型的参数.这是对的还是printf
其他的?
可能重复:
C是否支持重载?
我想知道printf是否支持C中的函数重载,因为在一个C程序中可以以多种方式使用相同的printf函数.
根据Linux 手册页,Linux C APIopen
有两个原型如下:
int open(const char *pathname, int oflags);
int open(const char *pathname, int oflags, mode_t mode);
Run Code Online (Sandbox Code Playgroud)
让我困惑的是:
为什么 Linux C API 'open' 支持函数重载??