2016-04-10 16 views
0

配列を宣言し、2D配列をパラメータとして渡します。しかし、私は同じエラーが発生し続けます:添え字付きの値は配列でもポインタでもベクトルでもありません。この行の場合、 :vertex [i] [j-1] = shape [i] [j];C - 添え字付きの値が配列でもポインタでもベクトルでもない

どうすれば解決できますか?

ヘッダファイル:

GLfloat mijnplayer [][4] ={ 
{0,-0.091057,0.198079,0.084590}, 
{0,-0.158043,0.158043,0.071039}, 
{0,-0.071039,0.158043,0.158043}}; 

関数呼び出し:

int main(void) 
{ 

drawVertex(mijnplayer,3,1); 

} 

void drawVertex(GLfloat shape[][4], int numberVertex, int shape) 
{ 
    int i,j; 
    GLfloat vertex[][3]={0}; 


    //convert 4element array to 3 element array 
    for(i=0;i<numberVertex;i++) 
    { 
     for(j=1;j<4;j++) 
     { 
      vertex[i][j-1] = shape[i][j]; 
     } 

    } 

    for(i=0;i<numberVertex;i++) 
    { 

     glVertex3fv(vertex[i]); 
    } 

} 

EDIT:

完全コンパイラ出力:

CC -c -o mijnTest.o mijnTest.c

mijnTest.c:59:23 23:エラー: '形状'

空隙drawVertex(GLfloat形状[] [4]、INT numberVertex、INT形) ^

mijnTest.cための相反するタイプ: 25:注: '形状' の以前の定義は、ボイドdrawVertex(GLfloat形状[] [4]、INT numberVertex、INT形) ^

mijnTest.cここ

た:関数で 'drawVertex'

mijnTest.c:43:26:エラー:添え字付きの値が配列でもポインタでもない。 ベクトル

vertex [i] [j-1] = shape [i] [j]; ^

mijnTest.c:関数で 'drawScene'

mijnTest.c:69:2:警告: 互換性のないポインタ型から 'drawVertex' の引数1を渡す[デフォルトで有効]

drawVertex(assen、6,0); ^

mijnTest.c:6:23注意:予想 'GLfloat()[4]' が、引数がタイプ である 'GLfloat()[3]'

空隙drawVertex(GLfloat形状[] [4]、INT numberVertex、INT形) ^

メイク:*** [mijnTest.o]エラー1

+0

形状のデータ型はintです。 –

+0

質問を編集して、コンパイラからの*完全な出力を完全かつ未編集で、可能な情報メモと警告を含めて記述できますか? –

+0

@ JoachimPileborg、追加。 –

答えて

1

その理由はshapeはデータ型がintの変数であり、配列もポインタもベクトルでもありません。

データ型が間違っているか、誤った変数を使用しています。

+0

何も私は思います。完全なコード:http://dpaste.com/3RN0KR6 –

+0

@ J.Doeどのようにしてshape [i] [j]を書くことができ、int型を書くことができます。 –

+0

OMG!それを見たことはありませんでした。 –

1

GLfloat vertex[][3] 
のような宣言

は、関数の引数としてのみ有効です(そしてそれはGLfloat (*vertex)[3]と等しくなります)。配列をローカル変数またはグローバル変数として宣言する場合は、にする必要があります。

mijnplayerを定義するときに動作します。これは、コンパイラが初期化に使用するデータからサイズを推測できるためです(サイズは暗黙的に設定されているため)。あなたがそれをしないと、コンパイラは配列のサイズを知ることができず、明示的に指定する必要があります。

+0

didd t work:http://dpaste.com/2N6ABBA、同じエラーを返します –

関連する問題