我正在使用GCC 4.6.0(在其他无法识别的平台上)。

我正在使用crypt()函数来加密密码。

我以前从未使用过该功能,所以我 checkout 了主页:

man 3 crypt

它说包括unistd.h header 。

但是,当我这样做时,我得到了crypt函数的隐式警告。
warning: implicit declaration of function ‘crypt’ [-Wimplicit-function-declaration]

我做了一些搜索,发现您必须包括crypt.h。但是,为什么在手册页中没有这么说呢?

最佳答案

它还在我的手册页中显示了#define _XOPEN_SOURCE(在包括unistd.h之前)。因此,您可能应该添加它以暴露crypt的声明。

编辑

我刚试过在完成技巧之前,先添加unistd.h#define _XOPEN_SOURCE。仅包括它是不够的。

使用

gcc version 4.6.0 20110429
GNU C Library stable release version 2.13

调查unistd.h:
/* XPG4.2 specifies that prototypes for the encryption functions must
   be defined here.  */
#ifdef  __USE_XOPEN
/* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
extern char *crypt (__const char *__key, __const char *__salt)
     __THROW __nonnull ((1, 2));

关于c - crypt()函数是在unistd.h还是crypt.h中声明的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6127921/

10-13 05:54