我有一个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;
}
我编译为makefile的一部分并收到此错误:
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 :(得分:0)
我最初的猜测是在头文件;
的末尾缺少header2.h
,但是查看header2.h
的内容,似乎不是问题。
最令人惊讶的是错误消息:
stage2.c:2:1: error: two or more data types in declaration specifiers
int main(int argc, char *argv[]) {
main
的定义分为2行,但在错误消息中显示为一行。您是否可以将源文件中的定义修改为int main(int argc, char **argv) {
以验证错误消息是否发生更改并且确实与您认为的文件有关?另请注意,unsigned end_of_string: TRUE;
中的声明typedef
定义了宽度为1位的位域end_of_string
。