2013-05-19 23 views
1

Я использую блоки кода для программирования C, моя проблема в том, когда я запускаю программу, которую я создал, я получаю этот оператор в журнале сборки.Что означает это сообщение?

-------------- Сложение: отладка в назначении C (компилятор: ГНУ GCC компилятор) ---------------

mingw32-g++.exe -o "bin\Debug\C assignment.exe" obj\Debug\main.o  
mingw32-g++.exe: Internal error: Aborted (program collect2) 
Please submit a full bug report. 
See <URL:http://www.mingw.org/bugs.shtml> for instructions. 
Process terminated with status 1 (0 minutes, 0 seconds) 
0 errors, 0 warnings (0 minutes, 0 seconds) 

Что это значит? У меня есть выходные данные в моей программе, но я не получаю желаемый результат, вместо этого я получаю вышеуказанное сообщение в журнале сборки. Кстати, я новичок в языке C, а также это мой первый раз с использованием кода IDE.

EDIT: -

Это моя программа.

#include <stdio.h> 


struct preparation_time{ 
int spongecake; 
int meringue; 
int chocalate; 
int red_velvet; 
}; 

void cake_order(struct preparation_time *); 



main() 
{ 

struct preparation_time caketime; 

cake_order(&caketime); 


} 


void cake_order(struct preparation_time *thetime) 
{ 
    int i; 

    thetime->chocalate=25; 
    thetime->meringue=45; 
    thetime->red_velvet=60; 
    thetime->spongecake=30; 

    for(i=0;i<180;i++) 
    { 

     if(thetime->chocalate==i) 
     { 
      printf("Chocalate cake"); 
      thetime->chocalate=thetime->chocalate*2; 

     } 
    if(thetime->spongecake==i) 
    { 
     printf("Sponge cake"); 
     thetime->spongecake=thetime->spongecake*2; 
    } 

    if(thetime->meringue==i) 
    { 
     printf("Meringue"); 
     thetime->meringue=thetime->meringue*2; 

    } 

    if(thetime->red_velvet==i) 
    { 

     printf("Red velvet"); 
     thetime->red_velvet=thetime->red_velvet*2; 
    } 

} 

} 

Благодарим вас за ваше время.

+0

Сообщение похоже, что вы попали в ошибку в системе компилятора или сборки. – Dai

+0

Попробуйте заменить обратную косую черту в ваших файлах с помощью косой черты, например. 'mingw32 - ++. exe -o" bin/Debug/C assign.exe "obj/Debug/Main.o' – Dai

+0

Я пробовал ту же программу на другом компьютере, и она работала. Похоже на ошибку в компиляторе. Спасибо за помощь, ребята. –

ответ

1

Во-первых, ваш main должен return 0;. Также для хорошего стиля вы должны объявить его явно как int main.

Тогда (я попробовал) есть no предупреждения при компиляции и программа работает нормально.

Наиболее вероятной проблемой является проблема с путём командной строки: обратная косая черта, пробелы, верхний/нижний регистр.

  • Попробуйте перемещение obj\Debug\main.o перед -o.
  • Попробуйте заменить обратную косую черту вперед.
  • Если это не сработало, попробуйте использовать только каталоги, у которых нет пробелов, прописных или специальных символов.
  • Если это не сработало, поэкспериментируйте: поместите все в один каталог и используйте только имена файлов, никаких путей.

Менее вероятно, проблема заключается в том, что это является фактическим (MinGW-) GCC компилятор ошибка, в этом случае вы должны сначала обновление ваш компилятор и повторных попыток. Если он по-прежнему не работает, тогда отправляйте его по своему усмотрению.

Удачи вам!

+0

main неявно возвращает 0, нет требования иметь там оператор возврата. – rubenvb

+0

@rubenvb в C++. но не в C. –

+0

C99 '5.1.2.2.3': «Если тип возврата основной функции является типом, совместимым с int, возврат от начального вызова к основной функции эквивалентен вызову функции выхода со значением, возвращаемым главной функцией в качестве аргумента; ** достигая}, который завершает основную функцию, возвращает значение 0 **. Если тип возврата несовместим с int, статус завершения, возвращаемый в среду хоста, не указан. " – rubenvb

Смежные вопросы