【问题标题】:Default parameters in CC中的默认参数
【发布时间】:2012-02-29 10:08:16
【问题描述】:

是否可以在 C 中设置默认参数的值?例如:

void display(int a, int b=10){
//do something
}

main(){
  display(1);
  display(1,2); // override default value
}

Visual Studio 2008,抱怨 -void display(int a, int b=10) 中存在语法错误。如果这在 C 中是不合法的,那还有什么替代方法?请告诉我。谢谢。

【问题讨论】:

标签: c parameters default


【解决方案1】:

默认参数是 C++ 特性。

C 没有默认参数。

【讨论】:

    【解决方案2】:

    这在标准 C 中是不可能的。另一种方法是将参数编码到函数名中,例如

    void display(int a){
        display_with_b(a, 10);
    }
    
    void display_with_b(int a, int b){
        //do something
    }
    

    【讨论】:

    • +1。我也喜欢this answer 上的评论中的做法,其中函数的名称包括它所采用的参数数量。
    【解决方案3】:

    C 中没有默认参数。

    您可以通过此方法获得的一种方法是传入 NULL 指针,然后在传递 NULL 时将值设置为默认值。这很危险,所以除非你真的需要默认参数,否则我不会推荐它。

    例子

    function ( char *path)
    {
        FILE *outHandle;
    
        if (path==NULL){
            outHandle=fopen("DummyFile","w");
        }else
        {
            outHandle=fopen(path,"w");
        }
    
    }
    

    【讨论】:

      【解决方案4】:

      不是这样的……

      您可以使用 int 数组或 varargs 并在函数中填充缺失的数据。但是,您会丢失编译时检查。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 2013-04-15
        • 1970-01-01
        • 2022-07-17
        • 2011-12-28
        • 2012-05-04
        相关资源
        最近更新 更多