c - 重新定义主

标签 c program-entry-point

我开始用 C 编写代码,我的代码中需要 toupper 函数,所以我添加到 ctype.h 头文件中以包含它。

突然之间我无法运行我的程序,因为我的编译器不断收到redefinition of main 错误。

在我添加头文件ctype.h 之前,即使我删除了头文件ctype.h,程序也会运行。我该怎么做才能解决这个问题?

#include <stdio.h>
#include <ctype.h>

#define NAMESPACE 20

int main (void)
{  

    char first_name[NAMESPACE], middle_name[NAMESPACE], last_name[NAMESPACE];
    printf ("Please enter your first, middle and last name.\n");
    scanf ("%s", first_name);
    scanf("%s", middle_name);
    scanf ("%s", last_name);
    printf ("%s %0.1s %s", first_name, middle_name, last_name);
    return 0;
}

[error] redefinition of "int main()":

这是在我的 DEV c++ 中保存为名为 ctype.h 的头文件的代码,

#include<stdio.h>
#include<conio.h>
int main (void)
{
char ch[]="I AM AN IDIOT.";
char c='A';
int i=0;
while(c)
{
c=getch();
printf("%c\a",ch[i]);
i++;
if(i==14)
{
printf(" "); i=0;
}
}
}

最佳答案

您发布的代码没有解释您提供的错误消息。它有一些问题,但不会引起任何错误。有几种可能的错误原因,其中包括:

  1. 我最好的猜测是您在项目中有另一个源文件,它有自己的 main() 函数,并且 IDE 配置为将这两个源文件包含在同一个目标程序中。这可能只是由于它们被并置在同一目录中而导致的。其他源文件甚至可能是一些愚蠢的东西,例如您提供的文件的备份副本。
  2. 或者,您可能有一个名为 ctype.h 的项目本地头文件,它定义了一个 main() 函数,而 Dev C++ 选择了那个函数而不是标准库的标题。 (是的,这实际上只是 (1) 的一个变体;“'int main()' 的重新定义”没有太多回旋余地。)
  3. 或者 Dev C++ 可能说错了,它提示 main() 的重新声明,而不是重新定义。如果它的 ctype.h header 包含冲突声明,例如 int main(int argc, char *argv[]),那么它可能会发出投诉。在这种不太可能发生的情况下,您可以通过将 main() 的声明更改为双参数形式来解决错误。

关于c - 重新定义主,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30671479/

相关文章:

java - 不需要命令行参数的程序是否需要 String args[] 参数?

java - main方法执行失败故障?

c - 将链接列表打印到现有文本文件 - 覆盖文件

c - O_APPEND 的十六进制值是多少?

c - 将数字从文件传递到结构中

子进程被杀死,而父进程在读取时被阻止

java - 为 x 和 y 设计一个循环内的公式来满足这些要求

Java:为什么我不能在 main 之外调用这个方法?

java - 从 jar 文件中,从实现 jar 外部类的类调用 main 方法

c++ - 在一行中初始化/设置 char *argv[] inside main()