在OSX上使用crypt\r

在OSX上使用crypt\r,c,multithreading,gnu,crypt,C,Multithreading,Gnu,Crypt,我想在Mac OS X 10.8.2上使用crypt\u r功能 #define _GNU_SOURCE #include <crypt.h> 从哪里可以获取crypt.h文件?还是我把它包括在内是错的 编辑的问题-具体示例 #include <unistd.h> #include <stdlib.h> int main(){ struct crypt_data * data = (struct crypt_data *) malloc(sizeo

我想在Mac OS X 10.8.2上使用
crypt\u r
功能

#define _GNU_SOURCE
#include <crypt.h>
从哪里可以获取crypt.h文件?还是我把它包括在内是错的

编辑的问题-具体示例

#include <unistd.h>
#include <stdlib.h>

int main(){
    struct crypt_data * data = (struct crypt_data *) malloc(sizeof(struct crypt_data));
    char * testhash;
    testhash = crypt_r("string", "sa", data);
    free(data);
    return 0;
}
编辑:
crypt\u r()
在OS X上不可用

原始答复:

OS X上
的内容由
处理。因此,与其

#define _GNU_SOURCE
#include <crypt.h>
定义GNU源
#包括
简单地写

#include <unistd.h>
#包括

为了访问
crypt()
函数。

即使两者都存在,我也会得到文件未找到错误--编辑:回答曾经删除过评论的人:“#定义#还需要开源”。实际上,不是在OSX上,对不起。看到我的答案。然后我得到:
警告:函数'crypt\u r'的隐式声明
@kadrian您不应该这样做。您使用的是什么版本的OS X和哪个编译器?gcc:
i686-apple-darwin11-llvm-gcc-4.2(gcc)4.2.1(基于apple Inc.build 5658)(llvm build 2336.11.00)
和Mac OS X 10.8.2(应该是最新的)@kadrian对我来说,同一个编译器和OS X 10.7.5不会产生任何警告。@kadrian抱歉,请注意。我写了
crypt()
,而不是
crypt\u r()
crypt\u r()
在OS X上不可用。
#define _GNU_SOURCE
#include <crypt.h>
#include <unistd.h>