我是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;
}
答案 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
,它应该可以工作。