2013-08-26 4 views
0

Я получаю эти ошибки при попытке скомпилировать мою программу с GCC, и я не уверен, что их вызывает.gcc error "expected") 'before' ['token "

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 

Моя программа отлично компилируется в визуальной студии 2012.

Heres файл заголовок, который, кажется, вызывает ошибку.

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

Моей психические силы отладки сказать мне, что ваша визуальная студия компилирует код как C++, а GCC компилирует как C. Так как вы пропустили struct ключевое слово, прежде чем data в функции параметров Сов-компилятор не знает, что делать. Попробуйте запустить его через г ++ вместо GCC (и, возможно, убедитесь, что расширение вашего включая источник файла является .C или .cpp.

+0

@DavidHeffernan, компиляция предоставленного кода с gcc дает сообщение об ошибке. – AProgrammer

+0

@ Давид Хеффернан По крайней мере, с gcc 4.4 и 4.5 я получаю ту же ошибку, что и компиляция OP с gcc. –

5

Проблема заключается в том, что вы передаете functions.h для компилятора. То есть включаемый файл, и вы должны просто позволить два файла .cpp включают его. Нет необходимости передавать его в вызове командной строки компилятором. Просто удалите functions.h из командной строки gcc.

Поскольку это C++, вы должны использовать g ++, а не gcc для компиляции. Поскольку вы использовали gcc, компилятор обработал functions.h как C, а код недействителен C.

Так что, я думаю, что ваша компиляция должна быть

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

Суффикс '.cpp' сообщает' gcc' обрабатывать 'functions.cpp' и' main.cpp' как источник C++. Но файл 'functions.h', который вы передаете в командной строке' gcc', заставляет 'gcc' рассматривать его как источник C. Вы * можете * компилировать файл заголовка напрямую, но это полезно только для проверки ошибок. И вы должны использовать 'g ++', а не' gcc' для компиляции C++, хотя это действительно имеет значение только при связывании. –

Смежные вопросы