错误:在主声明符()

问题描述:

我有一个main功能作为一个更大的项目,是作为其一部分的两个或更多的数据类型如下:错误:在主声明符()

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include "header2.h" 

int 
main(int argc, char *argv[]) { 
    node_t *tst=NULL; 
    int weight; 
    char prefix[CHARMAX]; 
    FILE *datafile = fopen(argv[1],"r"); 
    while (fscanf(datafile,"%d;%[^\n]", &weight, prefix)==2) { 
    tst=insert(tst,prefix,weight); 
    } 
    fclose(datafile); 
    while (fscanf(stdin,"%s",prefix)) { 
    printf("Prefix: %s ",prefix); 
    FILE *out = fopen(argv[2],"a"); 
    fprintf(out,"Prefix: %s\n",prefix); 
    fclose(out); 
    find_and_traverse(tst,(char*)prefix); 
    } 
    return 0; 
} 

我编译我的生成文件的一部分,并得到这个错误:

stage2.c:2:1: error: two or more data types in declaration specifiers 
int main(int argc, char *argv[]) { 
^ 

线2包括<stdlib.h>,所以我真的不知道是什么原因造成这个错误。

关于header2.h内容 - 考虑到误差指着2号线不就行了4我不认为这是必要的 - 但在这里它是:

typedef struct node { 
    char data; 
    unsigned end_of_string: TRUE; 
    struct node *left; 
    struct node *equal; 
    struct node *right; 
    int weight; 
} node_t; 

typedef struct sorted_node { 
    char data[250]; 
    int weight; 
} sorted_node_t; 

node_t* insert(node_t* pNode, char* word, int weight); 
void find_and_traverse(node_t* pNode, char* prefix); 
void selectionsort(node_t* pNode, char* buffer, int depth, int max); 
void sort(sorted_node_t arr[], int n); 

请帮帮忙!

+0

所以你明白'header2.h'的内容可以引起这个,但是不要在你的问题中包含它们。当然你可以看到这个问题有多难以回答? – hvd

+0

@hvd添加了header2.h文件。由于错误指向第2行而不是4,我认为这不是必需的 – vulcanoiding

+1

我不确定''unsigned end_of_string:TRUE;''typedef''是否正确。请删除':TRUE'并重试。 –

我最初的猜测是在头文件header2.h的末尾有一个缺失的;,但看着header2.h的内容,它似乎不是问题所在。

什么是最令人惊讶的是错误消息:

stage2.c:2:1: error: two or more data types in declaration specifiers 
int main(int argc, char *argv[]) { 
  • 线2没有此内容(如你注意到)
  • 在片段中的main定义发布拆分2线,但在错误消息中显示为一行。您是否可以将源文件中的定义修改为int main(int argc, char **argv) {以验证错误消息是否更改,并确实与您认为它的文件有关?也

注意typedef内的声明unsigned end_of_string: TRUE;定义1位宽度的位字段end_of_string