Search code examples
cprototype

Can we define function prototype in main function in C?


in my university our teacher taught us "we define function prototype before main function. Like:

#include<stdio.h>
void findmax(float, float);
int main()
{
    //code goes here
}

But today my friend showed me they learned they put prototype inside main function. Like:

#include<stdio.h>
int main()
{
    void findmax(float, float);

    float firstnum, secondnum;

    printf("Enter first:");
    scanf("%f", &firstnum);

    printf("Enter second:");
    scanf("%f", &secondnum);

    findmax(firstnum, secondnum);
}

void findmax(float x, float y)
{
    float maxnum;

    if(x>y)
    {
            maxnum=x;
    }

    else
    {
       maxnum=y;
    }

    printf("The max is %f", maxnum);
}

They both works.I wonder if there are differences between them. Thanks.


Solution

  • Can we define function prototype in main function in C?

    Yes.

    I wonder if there are differences between them

    The difference is that in first snippet prototype is global while in second it is local to main. findmax will be visible after its declaration and/or definition.

    #include<stdio.h>
    void foo();
    int main()
    {
        void findmax(float, float); 
        foo();
        findmax(10, 20);  // It knows findmax by the prototype declared above
    }
    
    void findmax(float x, float y)
    {
        float maxnum;
    
        if(x>y)
            maxnum=x;
        else
            maxnum=y;
    
        printf("The max is %f", maxnum);
    }
    
    void foo(){   // foo is using findmax after its definition.
        findmax(12, 30);
    }