gcc错误“预期')'''''令牌'

时间:2013-08-26 14:00:41

标签: c++ gcc compilation

我在尝试使用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

我很难过,所以任何帮助都会受到赞赏!

2 个答案:

答案 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