2011-02-13 113 views

回答

0

假设u_charunsigned char的typedef,那么常规技巧是使用标准函数并应用强制转换。

虽然这很笨拙,所以你可以改为使用自动应用转换的宏。

#define STRSTR(haystack, needle) \ 
       ((u_char *)strstr((char *)haystack, (char *)needle)) 

或者,如果你的编译器支持C99可以编写inline功能。

static inline u_char *ustrstr(u_char *haystack, u_char *needle) 
{ 
    return (u_char *)strstr((char *)haystack, (char *)needle); 
} 

或者你可以简单地写盖功能:

u_char *ustrstr(u_char *haystack, u_char *needle) 
{ 
    return (u_char *)strstr((char *)haystack, (char *)needle); 
} 
0

由于u_char定义unsigned char型的BSD型插座的类型定义的实现(SYS/types.h中的* nix中和WINSOCK.H在Windows中),如果这是您的上下文,那么在将它们传递给标准C函数之前,您可以安全地将其应用到(char*)。如果这不是你的上下文,那么你必须找到u_char的声明并确认它是unsigned char类型或等价的,只有这样才能安全地应用这个强制转换。