c - 显然声明的变量被认为是未声明的
问题描述
我在代码块中有以下代码*,if else {}
但 GCC 编译器向我抛出此错误:
hw2b.c: In function `printSymbolK':
hw2b.c:26: parse error before `int'
hw2b.c:27: `w' undeclared (first use in this function)
hw2b.c:27: (Each undeclared identifier is reported only once
hw2b.c:27: for each function it appears in.)
*
int w = 0;
for(w = 4; w < i; w++) {
printf(" ");
}
有人可以告诉我我在这里缺少什么吗?w 变量在 if else 块中被声明和初始化,但它说它不是。有任何想法吗?
编辑:你是对的,我只复制了我的程序的一小部分。这是完整的代码:
#include <stdio.h>
/*
* The printSymbolK function accepts a
* natural number (N > 3) and prints the
* symbol K to the console according to certain
* specifications.
*/
void printSymbolK(int N) {
int i = 0,k=0;
int katoAkeraioMeros = N/2; // to apotelesma tou pilikou tha strogkilopoihtei pros ta kato dinontas mas to kato akeraio meros tou N/2
char star = '*';
for(i = 0;i < N; i++) {
if( i < katoAkeraioMeros) { // katoAkeraioMeros - i+1 = posa tha einai apo pano
int res = katoAkeraioMeros - 1; // poses fores tha trexei i epanalipsi
int l = 0;
printf("%c",star);
for(l = i;l < res;l++) {
printf(" ");
}
printf("%c\n",star);
} else if(i+1 == katoAkeraioMeros) {
printf("%c%c\n",star,star);
} else if(i > katoAkeraioMeros) { // auxise to space kata 1 gia kathe i apo edo kai pera
printf("%c",star);
int w = 0;
for(w = 4; w < i; w++) {
printf(" ");
}
printf("%c\n",star);
} else {
printf("%c %c\n",star,star);
}
}
}
int main() {
// Stelios Papamichail 4020
int n = 0;
do {
scanf("%d",&n);
printf("\n\n");
} while(n <= 3);
printSymbolK(n);
return 0;
}
解决方案
第一个错误说明了一切:
hw2b.c:26: parse error before `int'
所以某些东西在令牌之前触发了语法错误。int
你不应该担心进一步的错误。此时解析器感到困惑,并认为您w
在尝试声明它时正在使用它(编译器不会在第一个错误处停止,因此您可以一次修复多个错误,但有时会适得其反,有时它们会停止在一些错误,当你修复它时,你会得到更多错误......编译器会尽力处理无效代码)
只需修复第一个错误,然后重试。
推荐阅读
- python - 从列表中删除标点符号并将字符串值转换为python中的浮点数
- r - R将数据框列表中的列提取到列表中
- javascript - 对象的@property,tslint 给出错误 - no-redundant-jsdoc
- python - 在保持维数的同时选择 Numpy 数组的最后一列?
- python - 使用 Python requests 库获取发送和接收数据的时间戳
- android - Firestore 离线写入数据时的警告
- php - 尝试构建 php 代码时出现 Sublime 错误
- networking - Vagrant up 卡在“SSH 身份验证方法:私钥”
- javascript - 如何使用材料角度显示/隐藏下拉列表
- linux - Linux vagrantlucid32 make: *** 没有将目标设为“全部”的规则。停止