2016-09-25 200 views
-3

我在学校学习C时,必须创建一个管理音乐专辑矢量的程序,我试过编译但我有这个错误,而且我找不到关于这个的信息,编译器错误是: “in get_parm_info,at c-decl.c:4637”。编译C程序时出错

我该怎么办?

这只是一条消息。

该代码太长,以适应那里,但除此之外没有其他错误。

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#define MAX_STR 50 
#define MAX_CANZONI 20 
#define ALBUM_SIZE 44 
struct t_canzone { //54 bytes 
    char titolo[MAX_STR]; 
    int durata; //In secondi 
}; 
struct t_autore { //104 bytes 
    char nome[MAX_STR]; 
    char cognome[MAX_STR]; 
    int eta; 
}; 
struct t_album { 
    struct t_autore autore; //104 bytes 
    char titolo[MAX_STR]; //50 bytes 
    int numCanzoni;   //4 bytes 
    struct t_canzone canzoni[MAX_CANZONI]; //1080 bytes 
};  

void inizializzazione(struct t_album album); 
void stampacompleta(struct t_album album); 
void stampaalbum(struct t_album album,char nome[]); 
void cercacanzone(struct t_album album, char nome[]); 
void modificaalbum(struct t_album album, char nome[]); 
void aggiungicanzone(struct t_album album, char nome[]); 
void ordinamento(struct t_album album,void confronto(struct t_album,int,int); 
void crescente(struct t_album album,int i,int z); 
void decrescente(struct t_album album,int i,int z); 
void titlesort(struct t_album album,int i,int z); 
void namesort(struct t_album album,int i,int z); 

void crescente(struct t_album album,int i,int z){ 
    struct t_album supporto; 
    if(album[i].numCanzoni>album[z].numCanzoni) 
    { 
     supporto=album[i]; 
     album[i]=album[z]; 
     album[z]=supporto; 
    } 
} 

void decrescente(struct t_album album,int i,int z){ 
    struct t_album supporto; 
    if(album[i].numCanzoni<album[z].numCanzoni) 
    { 
     supporto=album[i]; 
     album[i]=album[z]; 
     album[z]=supporto; 
    } 
} 

void titlesort(struct t_album album,int i,int z){ 
    if(strncmp(album[i].titolo,album[z].titolo)>0) 
    { 
     supporto=album[i]; 
     album[i]=album[z]; 
     album[z]=supporto; 
    } 
} 

void namesort(struct t_album album,int i,int z){ 
    if(strncmp(album[i].autore.nome,album[z].autore.nome)>0) 
    { 
     supporto=album[i]; 
     album[i]=album[z]; 
     album[z]=supporto; 
    } 
    else if(strncmp(album[i].autore.nome,album[z].autore.nome)==0) 
    { 
     if(strncmp(album[i].autore.cognome,album[z].autore.cognome)>0) 
     { 
      supporto=album[i]; 
      album[i]=album[z]; 
      album[z]=supporto; 
     } 
    } 
} 



void ordinamento(struct t_album album,void confronto(struct t_album,int,int){ 
    int i,z; 
    for(i=0;i<ALBUM_SIZE-1;i++) 
    { 
     for(z=i+1;z<ALBUM_SIZE;z++) 
     { 
      confronto(album[],i,z); 
     } 
    } 
}    

[更新从评论:]

完整的 “错误” 的信息是:

Compiler: Default compiler Executing gcc.exe... gcc.exe "C:\Users\lavpreet\Desktop\canzone.c" -o "C:\Users\lavpreet\Desktop\canzone.exe" -g3 -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" -g3 C:\Users\lavpreet\Desktop\canzone.c:35: internal compiler error: in get_parm_info, at c-decl.c:4637 
Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.mingw.org/bugs.shtml> for instructions. Execution terminated 
+0

只显示* *相关的​​问题代码。你尝试过调试吗? – Li357

+1

...和*整个*错误消息。 –

+0

不,我不知道该怎么做,但编译日志说: '编译器:默认编译器 执行gcc.exe ... gcc.exe“C:\ Users \ lavpreet \ Desktop \ canzone “C:\ Dev-Cpp \ lib”-g3 C:\ Users \ \ Users \ lavpreet \ Desktop \ canzone.c:35:内部编译器错误:在get_parm_info中,在c-decl.c中:4637 请提交完整的错误报告, 包含预处理的源代码(如果适用)。 有关说明,请参见。 执行终止' –

回答

0

这一行:

void ordinamento(  struct t_album album, void confronto(struct t_album, int, int); 

缺少尾随)

也是这一行:

void ordinamento(struct t_album album,void confronto(struct t_album,int,int){ 

缺少尾随)

+0

当您修复上述两个语法错误时,编译器会显示一堆其他警告和错误,所有其他警告和错误rs也需要修复。 – user3629249

+0

是的,它的工作非常感谢。现在我会解决其他的错误 –