2017-11-14 7 views
-3

私はCプログラミングではかなり新しいので、同様の質問を読もうとしましたが、私の問題を解決できませんでした。Inializationによってキャストなしのポインタが作成される

私はg_Uart0RxBuf配列へのポインタを返す。この小さな機能があります:私は必要とする理由正直なところ、私は理解していない

uint8_t* pointer;    //Define pointer variable 
pointer = R_UART0_getBuffer(); //Should return a pointer to an uint8_t 

:私はこれをやっている呼び出し元の関数で

uint8_t* R_UART0_getBuffer() 
{ 
    uint8_t* pointer_to_buffer; 
    pointer_to_buffer = &g_Uart0RxBuf[0]; 
    return pointer_to_buffer; 
} 

をこの作品を作るためにキャスト。キャストせずにそれを行うことは可能ですか?

ありがとうございました。このような質問をしてくれてありがとうございました。

+4

「g_Uart0RxBuf」の種類は何ですか? – Serge

+1

正確に鋳造を使用していますか? –

+0

タイプキャスティングは、通常、異なるデータ型間の対話/代入の場合に使用されます。したがって、あなたの質問に答えるには、 "g_Uart0RxBuf"のタイプを指定する必要があります。 – Albert

答えて

0

キャストは必要ありません。あなたは、コンパイラは、関数の宣言を見ていると、あなたの今緩いCコンパイラはC99以来禁止されている陰関数の定義を(許可され前R_UART0_getBufferを呼び出している

  1. :問題は、のいずれかにダウンしています一部のコンパイラではデフォルトでオンになっています)。

  2. コンパイルエラーは実際にはその配列の型に応じてpointer_to_buffer = &g_Uart0RxBuf[0];というステートメントを参照します。

+0

これは問題でした。ありがとう。 – Aldridge1991

関連する問題