Implicit declaration of function "..." is invalid in C99?
Asked Answered
R

4

8

I'm trying to declare a function within another function. So here's part of my code: ViewController.m

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

}

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

ViewController.h

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

Which returned me the error of "Implicit declaration of function "..." is invalid in C99".

Result: https://i.sstatic.net/XGevK.png

I've found that people have encountered similar problem, but as a newbie I didn't really know what to do next. Thanks for your help! :)

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

Reel answered 22/7, 2013 at 5:11 Comment(1)
first learn some basic things related to objective see after that you can implement programs..cocoadevcentral.com/d/learn_objectivecShulock
X
14

You are not declaring a function; but a instance method, so to call it you must send it as a message to self;

[self updatedisplay];

EDIT

As @rmaddy pointed out (thanks for that) it is declared as instance method not class method. To make the things clear;

- (return_type)instance_method_name.... is called via 'self' or pointer to object instance.
+ (return_type)class_method_name.... is called directly on the class (static).

Xeniaxeno answered 22/7, 2013 at 5:14 Comment(2)
updatedisplay is declared as an instance method, not a class method.Ihs
should I still use 'self' even if the function has parameters? like gettimeofday(&endTime, NULL);Manno
T
7

Problem

updatedisplay();

solution

[self updatedisplay];

cause

- (void)updatedisplay;

is a class method available for that class.So you have to call from the class to have the method available for you.

Tommi answered 22/7, 2013 at 5:14 Comment(0)
R
4

That is because you defined your function as a instance method, not a function.

So use it like

- (IBAction)minus1:(id)sender {
    counter--;
    [self updatedisplay]; // Change this line
}
Radcliffe answered 22/7, 2013 at 5:15 Comment(0)
M
2

write this way :

[self updatedisplay];
Maemaeander answered 22/7, 2013 at 5:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.