"error C2040: 'pBuffer': 'long' は 'long *' と間接操作のレベルが異なります" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
error C2040: 'pBuffer': 'long' は 'long *' と間接操作のレベルが異なります。

ソース(バグ有り):

#include <stdio.h>
#include <malloc.h>

int main()
{
long *pBuffer,
//メモリを確保
pBuffer = (long *)calloc( 64, sizeof( long ));
if( pBuffer != NULL )
printf( "long 型 × 64 のメモリを確保しました。\n" );
else
printf( "メモリの確保に失敗しました。\n" );
//メモリを解放
free( pBuffer ); }


原因:
間接操作に誤りがあります。

対処:
間接操作を見直します。
この例では、long *pBufferの後がコロンではなくカンマになっていた単純なミスでこのエラーが出力されています。

このミスにより、long型とlong* が間接操作となっています。


ソース(修正済み):

#include <stdio.h>
#include <malloc.h>

int main()
{
long *pBuffer;
//メモリを確保
pBuffer = (long *)calloc( 64, sizeof( long ));
if( pBuffer != NULL )
printf( "long 型 × 64 のメモリを確保しました。\n" );
else
printf( "メモリの確保に失敗しました。\n" );
//メモリを解放
free( pBuffer ); }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]