2015-04-27 3 views
1

Ok, я все время получаю следующее сообщение об ошибке:Как создать Makefile для Unix

g++ -c -o guess.o guess.cpp 
guess.cpp: In function ‘int main()’: 
guess.cpp:70:7: error: expected ‘}’ at end of input 
    } 
^
guess.cpp:70:7: error: expected ‘}’ at end of input 
guess.cpp:70:7: error: expected ‘}’ at end of input 
make: *** [guess.o] Error 1 

Он со ссылкой на последнюю часть моего кода, который:

cout << "Think of an integer between 1 and 1000. I will try to guess it." << endl; 

    bool result = doGuesses(0, 1001); 
     { 
    if (!result) 
       { 
    cout << " and is between 1 and 1000." << endl; 
    cout << "\n\nI demand a rematch!" << endl; 
       } 
     } 

Я удалил } и добавил его обратно, и я все равно продолжаю получать то же сообщение об ошибке. Что я делаю не так?

+2

Что вы застряли в? У вас есть эти файлы и что? –

+0

Я не могу скомпилировать файл guess.cpp и yesno.cpp для создания файлов guess.o и yesno.o. Это единственные части, которые удерживают меня от финиша –

+0

. Тогда вам нужно дать нам команду, в которой вы работаете, и выводить ошибку, которую вы получаете. –

ответ

1

MAKEFILE

Это выглядит хорошо для меня. Однако есть пара проблем.

guess:yesno.o guess.o 
    g++ guess yesno.o guess.o 

g++ нужен -o вариант, чтобы назвать выходной файл. Это тот же синтаксис, что и в командной строке. И я положил бы место после толстой кишки. Но я не уверен, что это обязательно.

guess.o: yesno.h 
yesno.o: yesno.h 

guess.o и yesno.o также нуждаются в зависимости с их соответствующих CPP файлов.

Как это:

guess.o: guess.cpp yesno.h 
+0

Отлично. Поэтому я вошел и добавил -o в свой файл make. Когда я пытаюсь скомпилировать файл, я получаю эту ошибку: –

+0

в файле, включенном в файл guess.cpp. фатальная ошибка. Я не могу скомпилировать файл guess.cpp и yesno.cpp. Что я все еще делаю неправильно? –

+0

Попробуйте 'g ++ -c guess.cpp' и' g ++ -c yesno.cpp' в ваших правилах. '-c' сообщает' g ++ 'создать файл' .o'. –

1

Ошибки говорят сами за себя.

Ваш защитник включения пытается проверить недопустимое имя макроса, yesno.h. Он должен быть yesno_h, чтобы соответствовать следующему определению.

Ваш заголовок пытается включить себя, но как системный заголовок. Он не должен этого делать.

Вы хотите что-то больше похоже

#ifndef yesno_h 
#define yesno_h 

// Return true if response is "yes", "y", or any upper/lowercase 
// variant of those two strings. 
bool yesNo (std::string response); 

#endif 
+0

Я изменил ее, и я все еще получаю сообщение об ошибке. Должен ли я также изменять файлы guess.cpp и yesno.cpp для соответствия? –

+0

@miss_sparkles: Я не знаю, что вы подразумеваете под «изменить для соответствия», поскольку у них нет ничего, что должно соответствовать заголовку. Прочтите сообщение об ошибке и, если вы не можете его понять, задайте вопрос об этом. –

+0

Когда я набираю «make», чтобы попытаться скомпилировать файлы, он сообщает мне yesno.h Нет такого файла или каталога. #include . компиляция завершена. –

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