Для чего нужна библиотека С++ для компиляции этой программы

Когда я пытаюсь скомпилировать свою программу, я получаю следующие ошибки:

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

какую библиотеку мне нужно включить для исправления этих ошибок?

Ответ 1

Вы хотите:

#include <fcntl.h>    /* For O_RDWR */
#include <unistd.h>   /* For open(), creat() */

Также обратите внимание, что, как пишет @R Samuel Klatchko, это библиотеки not. То, что #include делает, вставляет файл в ваш код дословно. Так получилось, что стандартный заголовок fcntl.h будет иметь следующую строку:

#define O_RDWR    <some value here>

И unistd.h будут иметь такие строки, как:

int open(const char *, int, ...);

int creat(const char *, mode_t);

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

Затем последующий шаг linking будет искать эти функции в library; то есть там, где входит термин "библиотека". Наиболее типично эти функции будут существовать в библиотеке под названием libc.so. Вы можете подумать о том, что ваш компилятор добавляет флага -lc (ссылка на libc) от вашего имени.

Кроме того, это не "С++", а POSIX.

Ответ 2

Вы пробовали <fcntl.h>? Поиск любой комбинации этих символов привел бы к тому, что...