Я пытаюсь скомпилировать файлы C от http://cocoadevcentral.com/articles/000081.php, которые я буквально копировал и вставлял, поэтому я не верю, что существует какая-либо синтаксическая ошибка, но я все равно получаю ошибки. Я не знаю, что я делаю неправильно. Я использую текстовый редактор TextWrangler для сохранения моей записи и сохранения моих файлов. У меня Xcode загружен вместе с его терминальными инструментами, так что это тоже не должно быть проблемой.Компиляция с gcc и терминалом
Вот ошибки:
testc4.c:4: error: expected identifier or ‘(’ before ‘)’ token
song.c:5: error: function definition declared ‘typedef’
song.c:5: error: return type is an incomplete type
song.c: In function ‘make_song’:
song.c:6: error: ‘Song’ undeclared (first use in this function)
song.c:6: error: (Each undeclared identifier is reported only once
song.c:6: error: for each function it appears in.)
song.c:6: error: expected ‘;’ before ‘newSong’
song.c:8: error: ‘newSong’ undeclared (first use in this function)
song.c:12: warning: ‘return’ with a value, in function returning void
song.c: At top level:
song.c:15: error: expected ‘)’ before ‘theSong’
Вот команда, я использую для компиляции моей программы:
gcc testc4.c song.c -o testc4
В случае необходимости я могу отправить файлы, но они копируются прямо из руководство. Я назвал свой тестовый файл testc4.c вместо того, что он хотел.
Edit: (я понял, что вы должны были бы код)
testc4.c файла:
#include <stdio.h>
#include "song.h"
main()
{
Song firstSong = make_song (210, 2004);
Song secondSong = make_song (256, 1992);
Song thirdSong = { 223, 1997 };
display_song (thirdSong);
Song fourthSong = { 199, 2003 };
}
song.c файла:
#include <stdio.h>
#include "song.h"
Song make_song (int seconds, int year)
{
Song newSong;
newSong.lengthInSeconds = seconds;
newSong.yearRecorded = year;
display_song (newSong);
return newSong;
}
void display_song (Song theSong)
{
printf ("the song is %i seconds long ", theSong.lengthInSeconds);
printf ("and was made in %i\n", theSong.yearRecorded);
}
song.h файл
typedef struct {
int lengthInSeconds;
int yearRecorded;
} Song;
Song make_song (int seconds, int year);
void display_song (Song theSong);
Это прямые скопированные fr о сайте. Я набрал их в первую очередь, но когда это не сработало, я скопировал и вставил их.
Вы можете вставить то, что вы собираете. Что-то явно не так. – nneonneo
Нам нужно увидеть хотя бы строки 1-15 'song.c', а также любой заголовок, который вы написали и который включен в эти строки. Посмотрите, как создать SSCCE ([Short, Self-Contained, Correct Example] (http://sscce.org/)). Например, нам не нужны комментарии, если предоставленный вами код воспроизводит сообщения об ошибках. –
Дважды проверьте, что вы используете LF в качестве разделителя строк. В противном случае это может вызвать проблемы. Я попробовал это, и эта командная строка компилируется из коробки на моей ОС X 'gcc 4.2.1' –