2015-06-16 3 views
-2

У меня возникли проблемы с компиляцией и запуском моего .c файла в терминале. Во-первых, при компиляции, я вижу:Ошибка компиляции и запуска программы C на терминале Mac

HW3.c: In function ‘main’: 
HW3.c:87:5: error: ‘for’ loop initial declarations are only allowed in C99 mode 
for(int j = 0; j < 10; j++) { 
^ 
HW3.c:87:5: note: use option -std=c99 or -std=gnu99 to compile your code 
HW3.c:100:5: error: ‘for’ loop initial declarations are only allowed in C99 mode 
for(int j = 0; j < 10; j++) { 
^ 

Все мои переменных объявлен и назначен в начале программы, в том числе у, поэтому я не знаю, почему я вижу ошибку о «для» начальные объявления цикла.

Во-вторых, при попытке запустить мою программу, я набираю:

./a.out HW3.c 

и увидеть ошибки

./a.out: Command not found. 

Что может быть проблема здесь? Не работает ли она из-за ошибки при компиляции? Уверен, что у меня есть команда, правильно ...? Дайте мне знать, если вам нужно увидеть всю программу, чтобы помочь, это не слишком долго, я мог бы ее скопировать. Благодаря!

+1

'gcc HW3.c -std = c99' – BLUEPIXY

ответ

0

Вам нужно добавить новую версию стандарта C в свои параметры компилятора. Попробуйте добавить флаг --std=c99, и он должен работать.

Что касается вашей второй проблемы, то a.out является исполняемым произведением, созданным компилятором. Если в программе есть ошибки, это не приведет к выполнению исполняемого файла, поэтому вам придется исправить ошибки.

Вы также можете указать имя исполняемого файла с -o флагом:

gcc -std=c99 HW3.c -o HW3 

Это создаст исполняемый файл с именем HW3.

+0

Любые советы о том, как это сделать? Не было охвачено в классе, и google не помогает мне прямо сейчас. Пробивать его в терминал, по-видимому, не было ответом. И спасибо! – crushendo

+0

Какова была точная команда, которую вы набрали, чтобы получить сообщение об ошибке в своем сообщении? –

+0

Должно быть только один '-' перед' std', а не два. –

1

Если j уже объявлен в начале программы, а затем удалите int часть for (int j:

for(j = 0; j < 10; j++) { 

Вы можете объявить j внутри цикл, как вы, кажется, пытались сделать , но вам нужно будет сообщить вашему компилятору о поддержке новой версии стандарта C.

+0

Ahh ok, я знал, что это приемлемая вещь, не знаю об этой последней части. Я пошел вперед и удалил 'int =' в любом случае, проблема решена, спасибо. – crushendo