C函数可以有多个签名吗?

RLH*_*RLH 20 c function

可能重复:
C中的函数重载

抱歉,如果这是一个复制,但如果是,我找不到它.

在C中,您可以定义具有相同功能名称但具有不同参数的多个功能吗?我来自C#背景.在C#中,以下代码完全合法.

//我们的第一个功能

int MyFunction()
{
    //Code here
    return i;
}

int MyFunction(int passAParameter)
{
    // Code using passAParameter
    return i;
}
Run Code Online (Sandbox Code Playgroud)

在我的特定情况下,我想在参数列表的末尾创建一个具有一个可选参数(即int)的函数.可以这样做吗?

Jam*_*lis 40

C号不支持重载.

  • 虽然C一般没有过载,但是OP要求的特殊情况即默认参数,可以用方便的方式用宏来完成. (2认同)
  • 如果你想看看它在C++中是如何支持的,那么在类似unix的操作系统上使用`nm`工具,你会看到C++中ELF内置的符号被破坏并且它们的类型信息被添加到符号名中.如果你在相同的符号周围"``extern"C"``并重新构建并查看,你会发现名称没有被修改以包含参数类型. (2认同)

abe*_*nky 8

在严格的C中,你不能做超载.

但是,鉴于大多数C编译器也支持C++,并且C++确实支持重载,如果您使用主流C/C++编译器,则很有可能进行重载.

但它不是严格标准或可移植到纯C环境.