C89环境下编译报错‘for循环初始声明仅允许C99/C11模式’的解决方法
C89标准下for循环编译报错的修正方案
报错原因:C89标准不允许在for循环的初始化语句中声明变量,这个特性是C99及后续标准才引入的,默认以C89模式编译时会触发该错误。
修正方案1:严格符合C89标准的写法
C89要求所有局部变量必须在代码块的起始位置声明,因此只需将循环变量的声明移到函数代码块的最开头即可,修改后的代码如下:
void drawLine(int N, char C) { int i; for (i = 0; i < N; i++) { printf("%c\n", C); } } void drawSquare(int N, char C) { int i, j; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%c", C); } printf("\n"); } }
修正方案2:切换到C99+标准编译(非C89场景可选)
如果不需要严格遵循C89,可在编译时指定C99或更高版本标准,以gcc为例,编译命令为:
gcc -std=c99 your_source_file.c -o output_program
内容的提问来源于stack exchange,提问作者clpoland
相关产品推荐
相关产品推荐

