2013-01-02 46 views
1

我不明白我的错误信息函数采用长度为8的数组作为参数

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 
+2

这是无效的C.用完整的原型定义函数,即返回类型和参数类型。 –

+0

'&TriHolder [0]'和'TriHolder'表示完全相同类型的完全相同的值。确保'TriHolder'的类型是'float'的数组。 – pmg

+0

你的变量名有点混乱'defineLines(float TriHolder [],int args);'''defineLines(args,length)'。第二种情况下的参数是什么? – andre

回答

3

请勿使用ANSI之前的表单作为函数参数。以下应编译:

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

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

int defineLines(float triHolder[], int args) 
{ 
    /* .. */ 
} 
3

你的函数头:

defineLines(args, length){ 

必须符合您的原型:

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

注意失踪关键词(浮动,整型,等等)。所以更像是:

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

是你在找什么。你错过了TriHolderlineAB的定义,但是从你的代码中推测它们是一些全局浮点数组。 (请确认)。

此外,您还可以传递一个数组:

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

但是,如果我之前的假设是正确的,TriHolder是全球性的,为什么还要通过它呢?

+0

哇你2第一张海报很快,好吧,所以我必须改变函数头来说defineLines(float TriHolder [],int args){//主体函数;返回EXIT_SUCCESS;},谢谢你的帮助 –

1

你的原型defineLines是正确的,但你需要调用它是这样的:

defineLines(TriHolder,8); 

名字TriHolder对自己其实是一个指向第0数组的索引,它相当于TriHolder[0]

+0

你很快就能帮到我,谢谢敬涛 –