C 中是否存在某种形式的函数重载?
Does some form of function overloading exist in C?
假设我想创建一个函数 first
,它是 C 中数组的第一个元素 returns。显然我想创建一个可以解释所有类型的函数。
我会从这个开始:
int first(int list[]) {
return list[0];
}
哪个有效。显然...
我现在想为 char
做同样的事情
char first(char list[]) {
return list[0];
}
无法编译,因为程序中已经有一个 first
函数。
你们C哥是怎么处理这种情况的?
是否被迫使用不同的名称?
int first_int(int list[]) {
return list[0];
}
char first_char(char list[]) {
return list[0];
}
C11 引入了 generic selections 来模拟重载:
#define first(X) \
_Generic((X), \
int* : first_int, \
char*: first_char \
)(X)
假设我想创建一个函数 first
,它是 C 中数组的第一个元素 returns。显然我想创建一个可以解释所有类型的函数。
我会从这个开始:
int first(int list[]) {
return list[0];
}
哪个有效。显然...
我现在想为 char
char first(char list[]) {
return list[0];
}
无法编译,因为程序中已经有一个 first
函数。
你们C哥是怎么处理这种情况的?
是否被迫使用不同的名称?
int first_int(int list[]) {
return list[0];
}
char first_char(char list[]) {
return list[0];
}
C11 引入了 generic selections 来模拟重载:
#define first(X) \
_Generic((X), \
int* : first_int, \
char*: first_char \
)(X)