我已经看到了一个以上的问题,但是并不能真正解决我的问题。代码更大,但是问题出在这部分。我有这个东西:

int globalx=12;
int globaly=10;

void Function (int measurex, int measurey)
    float thingx()
            {
            (((globalx/2)-measurex)/(globalx/2));
            }
    float totalx=globalx/(float)thingx;
    float totaly=globaly/2;


并且它有问题,会返回该错误。顾名思义,globalx和globaly是两个全局变量。我在这里做错了什么?我该如何写一些我打算在这里做什么?

最佳答案

关于您的代码的几件事:


thingx替换为thingx()
Function定义应放在大括号{...}中。
thingx()定义之外定义Function(依赖于编译器,因为Nested functions are not allowed in standard C)。
return语句添加到thingx()函数。
int measurex作为参数添加到thingx()函数。
Function中,在获得totalx和totaly的值之后,您无需对它们进行任何操作(也许您只是没有将这个函数的整个代码放在您的问题中)。


您的函数定义应如下所示:

float thingx(int measurex)
{
    return (((globalx/2)-measurex)/(globalx/2));
}

void Function (int measurex, int measurey) {
    float totalx=globalx/(float)thingx(measurex);  // <-- missing parentheses, should be thingx(...)
    float totaly=globaly/2;

    // You probably want to do something with totalx and totaly here...
}


主要:

int globalx=12;
int globaly=10;

Function(globalx, globaly);


另外,请记住,这会将结果截断为整数globaly/2,因为globaly被定义为int(您可以阅读有关整数除法的内容:
What is the behavior of integer division?

07-25 22:56