C语言代码中遇到的错误 [Error] ‘for’ loop initial declarations are only allowed in C99 or C11 mode 是由于 编译器默认使用旧版C语言标准(如C89),而新版C99/C11标准允许在 for 循环内直接声明变量。

问题原因

C语言标准限制

旧版C89标准 要求所有变量声明必须在函数或代码块的开头,不允许在 for 循环的初始化部分声明变量(如 for (int i=0; …))

C99/C11标准 放宽了这一限制,允许在 for 循环内声明变量。
编译器默认设置

旧版编译器(如Dev-C++内置的GCC)可能默认使用C89标准编译代码。
启用C99/C11标准

解决办法

一、在编译时添加 -std=c99 或 -std=c11 选项,告知编译器使用新版标准:

Dev-C++设置:

点击菜单栏的 工具 (Tools) → 编译选项 (Compiler Options)
勾选 “编译时加入以下命令”
输入 -std=c99 或 -std=c11 → 点击 确定

二、升级编译器
若编译器版本过旧(如GCC 4.9.2),升级到新版GCC或使用支持C11的IDE(如Visual Studio)