Невозможно скомпилировать базовый учебник на C - PullRequest
1 голос
/ 28 ноября 2011

Я только начинаю пытаться изучать C и пытался делать уроки, но они не будут компилироваться. Похоже, ошибки указывают на то, что это проблема со мной, использующим 64-битную ОС (лев), но я не понимаю, как это могло быть в случае с такой простой программой.

Код: (скопировано непосредственно из учебника «thenewboston»)

#include <stdio.h>

int main(void)
{
    printf("Hello World");
    getch();
}

Затем я ввел это в терминал:

gcc tnb_1.c

И ошибка, которую я получил, была:

Undefined symbols for architecture x86_64:
  "_getch", referenced from:
      _main in cc2nMvOk.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

Компилятор, который я использую, является стандартным, установленным с xcode.

Извините, если на этот вопрос есть очевидный ответ, но, поскольку я не могу преодолеть первое препятствие, мне трудно чему-то научиться.

Спасибо за вашу помощь

Ответы [ 2 ]

6 голосов
/ 28 ноября 2011

Используйте getchar() вместо getch().getch() нестандартно.

Использование getchar() будет (вероятно) означать, что вам нужно нажать enter, тогда как getch() - нет, но если все, что вы пытаетесь сделать, это скомпилировать простую программу, чтобы начать работу с C, это, вероятно,не имеет значения для вас.

2 голосов
/ 28 ноября 2011

Если вы замените getch() на getchar() или getc(stdin), оно должно работать.Однако, как предположил Оли Чарльзуорт, вы, возможно, захотите взглянуть на разные учебники ... getch() находится в библиотеке curses, поэтому вы не сможете создать исполняемый файл без связывания этого.Если в учебнике это не указано, вероятно, это не очень хорошо.

...