В среде IDE используются более сложные опции для компилятора. Вам нужно включить несколько заголовков:
#include <stdlib.h> // exit()
#include <unistd.h> // close(), write()
Параметры по умолчанию позволяют компилировать практически все, что может быть Си. Похоже, IDE устанавливает «-Wmissing-prototypes» в качестве одного из параметров компилятора.
Если вы компилируете код с помощью компилятора C ++, вы должны убедиться, что все функции объявлены перед использованием. В этом случае C является неряшливым (или может быть неряшливым) - рекомендуется практиковать, чтобы все функции были объявлены перед определением или ссылкой, но это не обязательно. В C ++ это не обязательно.
Существует подмножество C, которое также является подмножеством C ++; есть биты C, которые не являются C ++, и есть много битов C ++, которые не являются C. В частности, произвольная программа на C, как правило, не является программой на C ++. Например, программа на C может не объявлять 'exit ()', и все же она может использовать ее и все же компилировать. Программа на C ++ должна объявить 'exit ()', прежде чем она сможет использовать ее и скомпилировать.