当我尝试编译程序时,我遇到了这些错误:
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
我需要包含哪些库来修复这些错误?
答案 0 :(得分:35)
你想:
#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);
换句话说,函数原型,它通知编译器该函数存在于某处以及它的参数可能是什么样的。
后面的链接步骤将在 libraries 中查找这些函数;这就是术语“库”的用武之地。大多数情况下,这些函数将存在于名为libc.so
的库中。您可以考虑编译器代表您插入标记-lc
(libc
的链接)。
此外,这些不是“C ++”而是POSIX。
答案 1 :(得分:6)
你试过<fcntl.h>
吗?搜索这些符号的任何组合都会产生......