错误:在主声明符()
问题描述:
我有一个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);
请帮帮忙!
答
我最初的猜测是在头文件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
。
所以你明白'header2.h'的内容可以引起这个,但是不要在你的问题中包含它们。当然你可以看到这个问题有多难以回答? – hvd
@hvd添加了header2.h文件。由于错误指向第2行而不是4,我认为这不是必需的 – vulcanoiding
我不确定''unsigned end_of_string:TRUE;''typedef''是否正确。请删除':TRUE'并重试。 –