我在尝试使用GCC编译我的程序时收到这些错误,但我不确定是什么导致它们。
functions.h:21: error: expected ')' before '[' token
functions.h:22: error: expected ')' before '[' token
functions.h:23: error: expected ')' before '[' token
functions.h:25: error: expected ')' before '[' token
functions.h:26: error: expected ')' before '[' token
functions.h:27: error: expected ')' before '[' token
我的程序在visual studio 2012中编译得很好。
看来导致错误的头文件。
struct subject
{
char year[5];
char session;
char code[8];
char credit[3];
char mark[4];
};
struct data
{
char name[30];
char id[30];
char cc[30];
char course[80];
struct subject subjects[30];
int gpa;
};
void displayRecord(data [], int);
int nameSearch(data [], char [], int [], int);
void editRecord(data [], int, int);
char getChar(const char [], int);
int getData(data []);
void displayData(data []);
void deleteRecord(data [], int, int);
我正在调用这样的编译器:
gcc -o test functions.cpp functions.h main.cpp
我很难过,所以任何帮助都会受到赞赏!
答案 0 :(得分:5)
我的通灵调试功能告诉我,您的visual studio正在将代码编译为C ++,而gcc正在将其编译为C.因为您在函数参数中错过了struct
之前的data
关键字C编译器不知道该怎么做。尝试通过g ++而不是gcc运行它(并且可能确保包含源文件的扩展名为.C
或.cpp
。
答案 1 :(得分:5)
问题是您正在将functions.h
传递给编译器。这是一个包含文件,您应该让两个.cpp文件包含它。没有必要在编译器的命令行调用中传递它。只需从命令行调用gcc中删除functions.h
即可。
由于这是C ++,你应该使用g ++而不是gcc来编译。由于您使用了gcc
,编译器将functions.h
视为C,代码无效C.
所以,我认为你的编译应该是
g++ -o test functions.cpp main.cpp