2011-02-13 21 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類型或等價的,只有這樣才能安全地應用這個強制轉換。