【发布时间】:2017-12-10 21:03:42
【问题描述】:
我对编程很陌生,我正在尝试创建一个简单的延迟,但我不断收到错误消息 - “明显调用的括号前的表达式必须具有(指向)函数类型”。
此代码用于游戏,它应该稍微延迟球拍运动。
void AI(void)
{
unsigned int delay = 1000;
if (yR2 > yBall)
{
if (yR2 > RACKET )
{
delay(1000);
yR2--;
}
}
我不知道为什么这不起作用,我已经尝试了很多年。它有什么问题,为什么会出现这个错误?
编辑:
我已经更新了代码。这似乎是正确的,但是当我尝试使用延迟时,整个屏幕都会延迟,而不仅仅是球拍(yR2)。
这是为什么?
void delay(int n)
{
volatile int i;
for (i = 0 ; i < n ; i++)
;
}
void AI(void)
{
if (yR2 > yBall)
{
if (yR2 > RACKET)
{
delay(1000);
yR2--;
}
}
【问题讨论】:
-
delay在您的代码中是unsigned int的变量。如果之前声明过这样的函数,它会被该变量屏蔽(覆盖) -
如果你有一个要调用的延迟函数,那么通过定义一个同名的变量来停止隐藏它。也就是说 -- 将整数重命名为
delay以外的名称,因此它不会干扰您调用名为delay的 函数 的能力。 -
请不要以隐藏原文的方式改写您的问题。此外,您的
delay()函数不执行任何操作,这意味着它可能会被任何体面的优化编译器完全优化掉。 -
你发布了你的问题,人们回答并评论了它,然后你改变了你的问题,使答案过时了。不要那样做。如果您要使用现有代码发布一个新问题,可能会有一个合理的答案,但我不会在这里发布它。 (提示:
delay(1000)可能需要很少的时间来执行。提示:有更好的方法来延迟指定的时间,但它们是特定于系统的。) -
您的原始问题已得到解答。发布一个新的。
标签: c