Xcode - Warning: Implicit declaration of function is invalid in C99

后端 未结 4 1002
春和景丽
春和景丽 2020-11-27 03:42

Getting a warning : Implicit declaration of function \'Fibonacci\' is invalid in C99. What\'s wrong?

#include 

int main(int argc, const char          


        
相关标签:
4条回答
  • 2020-11-27 03:59

    I have the same warning (it's make my app cannot build). When I add C function in Objective-C's .m file, But forgot to declared it at .h file.

    0 讨论(0)
  • 2020-11-27 04:05

    The compiler wants to know the function before it can use it

    just declare the function before you call it

    #include <stdio.h>
    
    int Fibonacci(int number); //now the compiler knows, what the signature looks like. this is all it needs for now
    
    int main(int argc, const char * argv[])
    {
        int input;
        printf("Please give me a number : ");
        scanf("%d", &input);
        getchar();
        printf("The fibonacci number of %d is : %d", input, Fibonacci(input)); //!!!
    
    }/* main */
    
    int Fibonacci(int number)
    {
    //…
    
    0 讨论(0)
  • 2020-11-27 04:06

    should call the function properly; like- Fibonacci:input

    0 讨论(0)
  • 2020-11-27 04:18

    The function has to be declared before it's getting called. This could be done in various ways:

    • Write down the prototype in a header
      Use this if the function shall be callable from several source files. Just write your prototype
      int Fibonacci(int number);
      down in a .h file (e.g. myfunctions.h) and then #include "myfunctions.h" in the C code.

    • Move the function before it's getting called the first time
      This means, write down the function
      int Fibonacci(int number){..}
      before your main() function

    • Explicitly declare the function before it's getting called the first time
      This is the combination of the above flavors: type the prototype of the function in the C file before your main() function

    As an additional note: if the function int Fibonacci(int number) shall only be used in the file where it's implemented, it shall be declared static, so that it's only visible in that translation unit.

    0 讨论(0)
提交回复
热议问题