错误:未知类型名称' u_char'在OSX 10.11.2中

时间:2015-12-11 18:10:33

标签: c makefile gnu-make

我是osx的新手,我遇到了一些问题。我试图makefile但是想出来:      error: unknown type name 'u_char'; did you mean 'char'?

我提到 C PCAP library unknown types error,将-D_BSD_SOURCE CFLAGS添加到我的makefile中,但它没有帮助。我错过了什么?

修改

这是产生错误的代码:

char *computePwd(const u_char *md5) {
    static char buf[16];
    unsigned char tmp[40];
    int tmpl=0;
    tmpl = strlen(userName);
    strcpy((char*)tmp, userName);
    memcpy(tmp + tmpl, md5, 16);
    tmpl += 16;
    memcpy(buf, ComputeHash(tmp, tmpl), 16);
    memset(tmp, 0, 16);
    strcpy((char*)tmp, password);
    int i;
    for (i=0; i<16; ++i)
        buf[i] ^= tmp[i];
    return buf;
}

3 个答案:

答案 0 :(得分:2)

-Du_char="unsigned char"添加到CFLAGS或仅修复来源。使用u_char作为unsigned char的惰性简写是传统BSD代码库中的常见做法,其中系统头历史上暴露了这样的typedef。它不应该用在现代代码中。

答案 1 :(得分:2)

或者你可以添加

#ifdef __APPLE__
#include <sys/types.h>
#endif

这为我解决了同样的问题。

它包含u_char的定义。

typedef unsigned char   u_char;

答案 2 :(得分:0)

添加-D_DARWIN_C_SOURCE,它应该可以工作。