2013-08-26 19 views
0

我在嘗試使用GCC編譯我的程序時收到這些錯誤,我不確定是什麼原因導致它們。gcc error'expected')'''''''

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 

我難倒所以任何幫助,將不勝感激!

+3

難道是過分的要求是21行? –

+1

此代碼不會出現問題!你能否提供[SSCCE](http://sscce.org/)? –

+0

你是如何調用gcc的? – interjay

回答

5

我的心理調試的力量告訴我,你的Visual Studio是編譯代碼爲C++而GCC編譯被作爲C.既然你在你的函數缺少struct關鍵字data之前的參數C編譯器不知道是什麼去做。嘗試到g運行它++而不是GCC(也可能是確保你包括源文件的擴展名是.C.cpp

+0

@DavidHeffernan,用gcc編譯提供的代碼給出報告的錯誤。 – AProgrammer

+0

@David Heffernan至少使用gcc 4.4和4.5,我得到與使用gcc編譯的OP相同的錯誤。 –

5

的問題是要傳遞functions.h編譯器。這是一個包含文件,你應該任由兩個.cpp文件包含它,不需要通過命令行調用編譯器來傳遞,只需從命令行調用gcc中刪除functions.h

因爲這是C++,所以應該使用g ++而不是gcc由於您使用了gcc,編譯器將functions.h視爲C,並且代碼無效C.

所以,我覺得您的編輯應該是

 
g++ -o test functions.cpp main.cpp 
+1

'.cpp'後綴告訴'gcc'把'functions.cpp'和'main.cpp'作爲C++源代碼。但是在'gcc'命令行上傳遞的'functions.h'文件會導致'gcc'將它視爲C源代碼。您*可以*直接編譯頭文件,但僅用於檢查錯誤。你應該使用'g ++'而不是'gcc'來編譯C++,儘管在鏈接過程中它確實很重要。 –