MSDN > Home page del forum > Visual C++ Language > error LNK2005: _main already defined
Formula una domandaFormula una domanda
 

Con rispostaerror LNK2005: _main already defined

  • martedì 4 luglio 2006 4.08GKW82 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    I recently installed VC++ 2005 EXP edition.

    1) I created a project name Radius and created two new items hello.cpp and area.cpp.

    2) area.cpp is the first item and hello.cpp is the second one.

    3) When I build the project Radius, I got the error

    LNK2005: _main already defined in area.obj

    Can you guide me to fix the compilation error.

    Thanks GKW82

Risposte

  • martedì 4 luglio 2006 5.37cythe Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     Con risposta

    This error is because of multiple definitions of main. You must have defined main in area.cpp as well as in hello.cpp. In C/C++ programs, you can write only one main per application.

    Remove one definition of main and it should work fine.

    Cheers

Tutte le risposte

  • martedì 4 luglio 2006 5.37cythe Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     Con risposta

    This error is because of multiple definitions of main. You must have defined main in area.cpp as well as in hello.cpp. In C/C++ programs, you can write only one main per application.

    Remove one definition of main and it should work fine.

    Cheers

  • mercoledì 5 luglio 2006 23.26GKW82 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    Yes. I defined main() in both. I removed the main from hello and I am now getting the error

    hello.cpp(4) : error C2447: '{' : missing function header (old-style formal list?)

    GKW82

  • giovedì 6 luglio 2006 1.39郭郭 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    Delete area.cpp and creat it.

    Do the thing above.

  • giovedì 6 luglio 2006 4.06GKW82 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    Nope.. didn't work. Getting the same error.

    GKW82

  • giovedì 6 luglio 2006 5.24Sunil_D Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     
    Pls. paste the hello.cpp code
  • giovedì 6 luglio 2006 6.24cythe Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    This is what MSDN says :

    Error Message

    '{' : missing function header (old-style formal list?)

    An open brace occurs at global scope without a corresponding function header.

    This error can be caused by an old-style C-language formal list.

    The following sample generates C2447:

    int c;
    {}       // C2447

    Check whether you are writing the open brace without the function name.

    Else post the code.

  • venerdì 7 luglio 2006 16.49GKW82 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    Here is the piece of code.

    1) radius.cpp

    #include <iostream>

    /* program to calculate radius of a circle */

    void main()

    {

    float area, radius;

    printf("Radius = ? ");

    scanf("%f", &radius);

    area = 3.14159 * radius * radius;

    printf("Area = %f", area);

    }

    2) hell.cpp

    include <iostream>

    {

    printf("Hello world\n");

    }

    c:\documents and settings\owner\my documents\visual studio 2005\projects\radius\radius\hello.cpp(4) : error C2447: '{' : missing function header (old-style formal list?)

    GKW82

  • venerdì 7 luglio 2006 17.59James Kelly Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    Try the following....

    1) radius.cpp

    #include <iostream>

    /* program to calculate radius of a circle */

    void main()

    {

       float area, radius;

       printf("Radius = ? ");

       scanf("%f", &radius);

       area = 3.14159 * radius * radius;

       printf("Area = %f", area);

    }

    2) hell.cpp

    include <iostream>

    void function_name()  // <---------------------------- did you miss this out?

    {

       printf("Hello world\n");

    }

  • venerdì 7 luglio 2006 23.46GKW82 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    The whole problem starts when I include the function main() in the hello.cpp. I end up in getting the message

    error LNK2005: _main already defined in hello.obj

    GKW82.

     

     

  • sabato 8 luglio 2006 15.37James Kelly Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     

    I think what you are trying to do is....


    1.) File: hello.cpp

    #include <IOSTREAM>
    #include <RADIUS.H>
    
    int main(int argc, char *argv[])
    {
          float area = get_area(5);
          printf("Area of circle with radius %d = %f\n", 5, area);
    }
    

    2.) File: radius.h

    float get_area(float radius);
    float get_circumference(float radius);
    

    3.) File: radius.cpp

    #include <RADIUS.H>
    
    float get_area(float radius)
    {
         return (3.14159 * radius * radius);
    }
    
    float get_circumference(float radius)
    {
         return (3.14159 * (radius * 2));
    }