c - 显然已声明的变量被视为未声明

标签 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 block 内声明和初始化的,但它说它不是。有什么想法吗?

编辑:你是对的,我只复制了程序的一小部分。这是完整的代码:

   #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 而您正在尝试声明它(编译器不会在第一个错误处停止,因此您可以一次修复多个错误,但有时这会适得其反,有时它们会在某些错误处停止,当你修复它时,你会得到更多错误......编译器会尽力处理无效代码)

只需修复第一个错误,然后重试。

关于c - 显然已声明的变量被视为未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52898907/

相关文章:

c - 写入子进程文件描述符

c - 如何使用__malloc_hook?

c - IAR 汇编程序是否可以将 C 头文件中的#define 导入到汇编程序中?

c - 用 C 将 JSON 字符串放入数据库

c - 通过 C 中的 Netlink 从内核到用户空间的多播

c - (nil) c 中 int 指针返回的值

c - 为什么数字字符的 ASCII 代码会写入文件?

c - 在 C 中定义新数据类型

c - 用户进程内存映射——bss 部分总是一样大吗?

c - Linux 中对 pthread_create 的 undefined reference