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

编译含std::size()的C++程序出现报错,请求解决方法

解决std::size()编译报错的方案

报错原因分析

你遇到的编译错误是std::size未被识别,核心原因有两个:一是**std::size是C17标准才引入的函数**,若编译器默认使用C17以下的标准(比如C11、C14),就会触发该错误;二是部分编译器需要显式包含对应头文件才能调用std::size。

具体解决办法

方法1:指定C++17及以上编译标准

编译时给编译器添加标准版本参数:

  • GCC/Clang编译器:编译命令中加入-std=c++17(或更高版本如-std=c++20)
    示例命令:g++ your_program.cpp -o your_program -std=c++17
  • MSVC编译器:使用/std:c++17参数

方法2:替换为低版本兼容的写法

如果无法升级C标准,可以用sizeof计算数组长度替代std::size(x),兼容所有C版本:

#include<iostream>

int main() {
 int x[]= {23,4,66,83,45,65,78,8900};
 // 通过sizeof计算数组元素个数
 const int arr_len = sizeof(x)/sizeof(x[0]);
 for(int i =0;i < arr_len; i++){
  std::cout<<"Number "<<i<<" "<<x[i]<<std::endl;
 }
}

方法3:添加必要头文件(部分编译器适用)

部分编译器中,std::size的声明在<iterator>头文件里,可在代码开头添加:

#include<iostream>
#include<iterator> // 引入std::size的声明头文件

注意:此方法仍需配合C++17及以上的编译标准使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:25:37