2011-02-09 24 views
0
unsigned __int8 Decrypt(unsigned __int8 data[]); 

for(;;) 
    { 
     if((sConnect=accept(sListen,(SOCKADDR*)&addr,&addrlen)) != INVALID_SOCKET) 
     { 
      Print("Socket Connected Successfully!"); 
      char buf[4095]; 
      recv(sListen,buf,sizeof(buf),0); 
      Decrypt(buf); // Error:IntelliSense: argument of type "char *" is incompatible with parameter of type "unsigned char *" 

     } 

を受け入れながらどのように私はこのPROBを修正することができます:あなたはこの署名を使用していないのはなぜソケット接続に

+1

なぜbufをタイプ 'unsigned __int8 [4095]'として宣言しないのですか? – James

+0

@James(変わった):彼は、recv()呼び出しで同じコンパイラの不平を言うかもしれません。 – James

+0

@ジェームズ(なぜ私は奇妙なのですか?:P):それはCスタイルのキャストです。 – James

答えて

2

Decryptを呼び出すと、bufを符号なし__int8にキャストします。

Decrypt((unsigned __int8*)buf); 
3

を-s:

unsigned char Decrypt(char *data); 

代わりの

unsigned __int8 Decrypt(unsigned __int8 data[]); 

あなたの場合それでbufがと宣言されていても、bufを簡単に渡すことができますの場合、Decryptに渡すと、ポインタタイプが自動的にになります。キャストする必要はありません!

0

正しいタイプにキャスト.............................