'while'gcc 之前需要标识符或 '(',在 While 之前添加标识符时出错 [关闭]

问题描述 投票:0回答:1

我是编码新手,有 3 个错误甚至更多:

  1. 不知道为什么显示 int main (Void)(重新定义 main 错误)
  2. 此函数(While Loop)下方显示('while'gcc 之前预期的标识符或'(')错误请帮忙。

enter image description here

#include <stdio.h>

int main ()
{
    printf("Hello World");
    return 0;

};


/// @brief 
/// @param  
/// @return 
int main(void)
{


};

我正在观看有关 While 循环的视频,但 IDE 开始显示这些错误,我很困惑。请帮忙。

c while-loop identifier undeclared-identifier
1个回答
1
投票

编程语言具有范围和可见性的重要概念。

两个主要函数都在同一个文件中定义。它们是在文件范围内定义的。在同一范围内,C 编程语言不允许程序员创建重复的标识符。

函数的名称是一个标识符,就像变量或常量的名称是一个标识符一样。当在同一范围内多次定义标识符时,编译器无法解决因使用相同名称命名多个事物而导致的歧义。

C 编译器寻找名为“main”的函数作为程序的起点。将两个“主”函数放在同一个文件中表明从两个函数启动程序。编译器只能处理任何程序中的一个起点。

while 循环必须存在于函数范围内。例如:

#include <stdio.h>

int main () {
   // output the values 1 through 10 using a while loop
   int count = 1;
   while (count < 11) {
      printf ("%d\n", count);
      count++;
   }
}

在上面的示例中,标识符“main”是在文件范围内定义的。 “int main ()”后面的开头“{”开始了 main 函数的函数作用域。 while循环存在于main函数的函数作用域内。因此,它存在于声明 main 的文件范围内的范围内。在 while 循环内执行两个表达式。第一个表达式是 printf 函数,它输出 count 的值。第二个表达式增加计数变量。 “count++;”后面的“}”结束 while 循环的范围。最后的“}”结束了主函数的范围。

C 提供了两种语句,简单语句和复合语句。简单语句是单个表达式,例如“count++;”。复合语句包含多个简单或复合语句。复合语句以“{”开始,以“}”结束。 “}”后面没有分号。

main函数使用复合语句,因为它的作用域包含多个语句。在上面的示例中,main 函数包含一个简单语句和一个复合语句(while 循环)。程序中所有的简单语句都以“;”结尾。所有复合语句均以“{”开头,以“}”结尾。

创建仅包含一个简单语句而不含其他内容的复合语句是可以接受的。事实上,这被认为是很好的防御性编程,因为它允许程序员添加额外的语句而不会造成混淆。

© www.soinside.com 2019 - 2024. All rights reserved.