Когда я пытаюсь скомпилировать свою программу, я получаю эти ошибки:
btio.c:19: error: ‘O_RDWR’ was not declared in this scope
btio.c:19: error: ‘open’ was not declared in this scope
btio.c: In function ‘short int create_tree()’:
btio.c:56: error: ‘creat’ was not declared in this scope
btio.c: In function ‘short int create_tree(int, int)’:
btio.c:71: error: ‘creat’ was not declared in this scope
какую библиотеку я должен включать для фиксации этих ошибок?
Вы хотите:
#include <fcntl.h> /* For O_RDWR */
#include <unistd.h> /* For open(), creat() */
Также обратите внимание, что, как пишет @R Samuel Klatchko, это не "библиотеки". Что #include
делает, так это вставляет файл в ваш код дословно. Так получилось, что стандартный заголовок fcntl.h
будет содержать строку вроде:
#define O_RDWR <some value here>
А unistd.h
будет содержать строки вроде:
int open(const char *, int, ...);
int creat(const char *, mode_t);
Другими словами, прототипы функций, которые сообщают компилятору, что эта функция существует где-то и, по желанию, как выглядят ее параметры.
На последующем этапе линковки эти функции будут искаться в библиотеках; именно здесь и появляется термин "библиотека". Как правило, эти функции существуют в библиотеке под названием libc.so
. Вы можете думать, что ваш компилятор вставляет флаг -lc
(ссылка на libc
) от вашего имени.
Кроме того, это не "C++", а скорее POSIX.
Вы пробовали
? Поиск любой комбинации этих символов дал бы следующее...