主要的重新定义

时间:2015-06-05 16:31:05

标签: c main

我开始用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 个答案:

答案 0 :(得分:4)

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

  1. 我最好的猜测是项目中有另一个源文件,它有自己的main()函数,并且IDE配置为包含在同一个目标程序中。这可能仅仅因为它们在同一目录中并置。其他源文件甚至可能是愚蠢的东西,例如您提供的文件的备份副本。
  2. 或者,可能是您有一个名为ctype.h的项目本地标题,它定义了main()函数,而Dev C ++正在选择一个而不是标准库的标题。 (是的,这实际上只是(1)的一个变体;&#34;重新定义&#39; int main()&#39;&#34;。)
  3. 或者Dev C ++ misspoke,它抱怨main()的重新声明而不是重新定义。如果其ctype.h标头包含有冲突的声明,例如int main(int argc, char *argv[]),则可能会发出投诉。在不太可能的情况下,您可以通过将main()的声明更改为双参数形式来解决错误。