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

不要对函数参数使用 pre-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){

是你要找的。您缺少 and 的定义TriHolderlineAB但从您的代码中推测它们是一些全局浮点数组。(请确认)。

此外,您可以将数组传递为:

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 回答