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

使用C++11列表初始化类成员时g++编译器报错求助

解决C++类成员列表初始化被判定为函数定义的编译错误

错误原因

你使用的C11引入的类成员列表初始化语法(如int age{};),在编译器默认的旧标准(比如C98)下不被支持。此时编译器会把int age{};错误解析为无参函数声明(等价于int age();),因此抛出function definition does not declare parameters的编译错误。

解决方案

你的编译器(Apple clang 14.0.3)完全支持C11及更高版本,只需在编译时显式指定C标准版本即可:

  • 使用以下命令编译代码:
    g++ main.cpp -o main -std=c++11
    
  • 也可以指定更高的标准版本,比如-std=c++17或-std=c++20,根据你的需求选择即可。

添加该编译选项后,编译器会正确识别类成员的列表初始化语法,不再将其误判为函数定义,代码即可正常编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:57:07