【问题标题】:Implicit declaration of function "..." is invalid in C99?函数“...”的隐式声明在 C99 中无效?
【发布时间】:2013-07-22 05:11:18
【问题描述】:

我试图在另一个函数中声明一个函数。所以这是我的代码的一部分: 视图控制器.m

- (void)updatedisplay{
    [_displayText setText:[NSString stringWithFormat:@"%d", counter]];

}

- (IBAction)minus1:(id)sender {
    counter--;
    updatedisplay();
}

ViewController.h

- (IBAction)minus1:(id)sender;
- (void)updatedisplay;

这返回了“函数的隐式声明“...”在 C99 中无效”的错误。

结果:http://i.imgur.com/rsIt6r2.png

我发现人们也遇到过类似的问题,但作为一个新手,我真的不知道下一步该做什么。谢谢你的帮助! :)

Implicit declaration of function '...' is invalid on C99

【问题讨论】:

标签: objective-c function-calls


【解决方案1】:

您没有声明function;但是instance method,所以要调用它,您必须将其作为消息发送到self;

[self updatedisplay];

编辑

正如@rmaddy 指出的那样(感谢),它被声明为实例方法而不是类方法。把事情说清楚;

- (return_type)instance_method_name.... 通过“自身”或指向对象实例的指针调用。
+ (return_type)class_method_name.... 直接在类上调用(静态)。

【讨论】:

  • updatedisplay 被声明为实例方法,而不是类方法。
  • 即使函数有参数,我还应该使用'self'吗?比如gettimeofday(&endTime, NULL);
【解决方案2】:

问题

updatedisplay();

解决方案

[self updatedisplay];

原因

- (void)updatedisplay;

是该类可用的类方法。因此,您必须从该类调用才能使该方法可供您使用。

【讨论】:

    【解决方案3】:

    那是因为您将函数定义为实例方法,而不是函数。

    所以像这样使用它

    - (IBAction)minus1:(id)sender {
        counter--;
        [self updatedisplay]; // Change this line
    }
    

    【讨论】:

      【解决方案4】:

      这样写:

      [self updatedisplay];
      

      【讨论】:

        猜你喜欢
        • 2013-07-09
        • 1970-01-01
        • 2013-11-28
        • 2018-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多