我不明白我的错误信息
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
答案 0 :(得分:3)
不要将pre-ANSI表单用于函数参数。以下应编译:
int defineLines(float TriHolder[], int args);
int main(void)
{
/* ... */
}
int defineLines(float triHolder[], int args)
{
/* .. */
}
答案 1 :(得分:3)
您的功能标题:
defineLines(args, length){
需要匹配您的原型:
int defineLines(float TriHolder[], int args);
注意缺少关键字(float,int等)。所以更像是:
int defineLines(float args[], int length){
您正在寻找什么。您错过了TriHolder
和lineAB
的定义,但是从您的代码中可能推断它们是一些全局浮点数。 (请确认)。
此外,您可以将数组传递为:
fineLines(TriHolder,8);} //this is the array I want to pass
但是,如果我之前的假设是正确的并且TriHolder
是全局的,为什么还要费心去传?
答案 2 :(得分:1)
defineLines
的原型是正确的,但是你需要这样称呼它:
defineLines(TriHolder,8);
名称TriHolder
本身实际上是指向第0个数组索引的指针,它相当于TriHolder[0]
。