1

エラーメッセージがわかりません

triangle_test.c: In function ‘defineLines’:
triangle_test.c:89:1: error: argument ‘args’ doesn’t match prototype
triangle_test.c:25:5: error: prototype declaration

&TriHolder、8に合格することになっているのかわかりませんか?私はこれまでCで配列を作成したことがなく、これについて少し助けが必要です。

int defineLines(float TriHolder[], int args);

int main(int argc, char* argv[])
{
  initialize_TriHolder(1,1,2,2,3,3,4,4);
  getInputTriVerts();
  getInputInteriorPoint();
  defineLines(&TriHolder[0],8); //this is the array I want to pass
}  

defineLines(args, length)
{
  lineAB[0]=TriHolder[0]; //Ax
  lineAB[1]=TriHolder[1]; //Ay
  lineAB[2]=TriHolder[2]; //Bx
  lineAB[3]=TriHolder[3]; //By
  slopeAB = (lineAB[3]-lineAB[1])/(lineAB[2]/lineAB[0]);
  interceptAB = slopeAB * -lineAB[0] + lineAB[1]; //b: y - y1 = m( x - x1 ), x = 0
  ///////////////////////////
  lineBC[0]=TriHolder[2];//Bx
  lineBC[1]=TriHolder[3];//By
  lineBC[2]=TriHolder[4];//Cx
  lineBC[3]=TriHolder[5];//Cy
4

3 に答える 3

3

関数パラメーターにプレANSIフォームを使用しないでください。以下をコンパイルする必要があります。

int defineLines(float TriHolder[], int args);

int main(void)
{
  /* ... */
}

int defineLines(float triHolder[], int args)
{
  /* .. */
}
于 2013-01-02T14:25:24.417 に答える
3

関数ヘッダー:

defineLines(args, length){

プロトタイプと一致する必要があります:

int defineLines(float TriHolder[], int args);

欠落しているキーワード(float、intなど)に注意してください。つまり、次のようなものです。

int defineLines(float args[], int length){

あなたが探しているものです。TriHolderとの定義が欠落していますlineABが、コードからは、おそらくそれらはfloatのグローバル配列です。(確認してください)。

また、配列を次のように渡すこともできます。

fineLines(TriHolder,8);}  //this is the array I want to pass

しかし、私の以前の仮定が正しく、TriHolderグローバルである場合、なぜそれをわざわざ渡すのですか?

于 2013-01-02T14:27:14.913 に答える
1

のプロトタイプdefineLinesは正しいですが、次のように呼び出す必要があります。

defineLines(TriHolder,8);

名前TriHolder自体は、実際には0番目の配列インデックスへのポインタであり、と同等TriHolder[0]です。

于 2013-01-02T14:27:32.170 に答える