Какую библиотеку C++ делают я должен заставить эту программу компилировать

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

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

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

12
задан neuromancer 10 May 2010 в 00:51
поделиться

2 ответа

Вы хотите:

#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.

36
ответ дан 2 December 2019 в 03:32
поделиться

Вы пробовали ? Поиск любой комбинации этих символов дал бы следующее...

6
ответ дан 2 December 2019 в 03:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: