GCC:允许在C99中重载功能

shu*_*alo 2 c gcc overloading c99

我在C99中编写代码并通过GCC编译.我想使用函数重载的风格原因(否则我必须自己做名称修改).

我读过有没有理由说C99不支持函数重载?但是,我仍然想知道它是否可以在GCC中启用.

你能帮助我吗?

Cat*_*lus 10

不,C99中没有函数重载,即使在愚蠢的GCC扩展中也没有.C11补充说_Generic,但即便如此,你仍然需要自己破坏名称.

void foo_int(int x);
void foo_double(double x);

#define foo(arg) _Generic((arg), int: foo_int, double: foo_double)(arg)
Run Code Online (Sandbox Code Playgroud)

不管是好还是坏,好吧.这是C.

  • 必须有人。;) 此外,这就是 OP 的要求。 (2认同)