2015-06-05 2 views
4

Я начал писать код в 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()": 

Вот код сохраняется в виде файла заголовка называется ctype.h в моей DEV C++,

#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; 
} 
} 
} 
+2

Код выглядит хорошо для меня. Какая у вас платформа? –

+0

Я новичок в этом, я не знаю. Я использую DEV C++. – ncu

+0

Я понятия не имею, как вам помочь. Я могу создать программу из вашего опубликованного кода с gcc, и она запускается. Формат '% 0,1s' выдает предупреждение, но программа запускается. –

ответ

4

код вы вывесили не объясняет сообщение об ошибке вы представили , У него есть некоторые проблемы, но никто из них не должен вызывать каких-либо ошибок. Есть несколько возможных причин ошибки, среди них:

  1. Мое предположение было бы, что у вас есть еще один исходный файл в проект, который имеет свою собственную main() функцию, а IDE выполнен так, чтобы как в то же самое целевой программы. Это может произойти просто благодаря тому, что они размещаются в одном каталоге. Этот другой исходный файл может даже быть чем-то глупым, например, резервной копией файла, который вы представили.
  2. В качестве альтернативы может быть, что у вас есть проект-локальный заголовок с именем ctype.h, который определяет функцию main(), а Dev C++ выбирает этот вариант вместо заголовка стандартной библиотеки. (Да, это действительно просто вариант на (1), в «переопределении» int main() «.» Не так много.)
  3. Или, возможно, DevC++, и он жалуется на объявление main(), а не re определение. Если заголовок ctype.h содержит противоречивую декларацию, такую ​​как int main(int argc, char *argv[]), тогда она может подать жалобу. В этом маловероятном случае вы можете решить эту ошибку, изменив объявление своего main() на форму с двумя аргументами.
+0

Да, вы были прямо на номер 2. Когда я нажал на сообщение об ошибке, программа, которую я никогда раньше не видел, появилась, и она была названа ctype.h и сохранена в виде файла заголовка. В ней также была основная функция. Как получить стандартный заголовок файла ctype.h? – ncu

+1

Если вы уверены, что 'ctype.h * вы нашли * не версию Dev C++ стандартного заголовка библиотеки, и особенно если она находится в одной из ваших проектных каталогов, а не где-то в одном из системных каталогов Dev C++, то вы, вероятно, можете просто удалить ее. Если файл-мошенник фактически заменил один из стандартных заголовков Dev C++, я бы полностью уничтожил Dev C++ из системы и установил новую копию из надежного источника. –

+0

предложение «3» поднимет два предупреждения о неиспользуемых параметрах, если только код не будет изменен, чтобы использовать эти два параметра. – user3629249