You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

现代C++是否支持标准的命名参数语法?

现代C++标准中的命名参数支持

截至C23正式标准,C没有提供像C#、Python那样原生的命名参数语法——也就是无法直接通过函数名(参数名: 值)的形式跳过参数位置、指定特定参数进行调用。

下面是和该需求相关的现有C++特性,注意不要和命名参数混淆:

  • 默认参数:C++早就支持为函数参数设置默认值,例如:
    void print_nums(int x = 0, int y = 0) {
        // 函数逻辑
    }
    
    但调用时只能按参数顺序省略后续的默认参数,无法跳过前面的参数直接指定后面的(比如不能只传y的值而跳过x)。
  • C++20指定初始化器:该特性允许对聚合类型(结构体、数组等)按成员名初始化,例如:
    struct Point { int x; int y; };
    Point p = {.y = 3, .x = 5};
    
    但它仅适用于聚合类型的初始化,不能用于函数调用的参数传递。

目前有针对命名参数的提案(如P1177系列)在C标准委员会讨论中,但尚未被纳入正式标准,未来版本的C有可能会加入该特性,但当前(C++23及之前)没有原生的标准实现方案。

内容的提问来源于stack exchange,提问作者ProMike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:28:10