Вы прекрасно компилируете код с помощью соответствующего компилятора.
Проблема в том, что ваш компилятор настроен как несоответствующий компилятор (он следует POSIX, но не C). Таким образом, вы получаете конфликт пространства имен между нестандартной функцией getline
, которую POSIX помещает в stdio.h.
С такими компиляторами, как gcc, вы можете заблокировать появление нестандартных расширений в стандартных заголовках, компилируя с gcc -std=c11
. По умолчанию gcc запускает -std=gnu11
, что соответствует POSIX, но не стандарту C.
Если вы новичок в изучении C, всегда компилируйте с gcc -std=c11 -pedantic-errors -Wall -Wextra
.