4

What have I screwed up here? There can be no hard coded values in the code which is why all my prompts are constants. We also have to call a user defined function to verify input.

Im getting the following error when I compile -- undefined reference to WinMain, [Error] Id returned 1 exit status I'm using Dev C++ as an IDE

#include <iostream> //for I/O
#include <iomanip> //for formatting output

using namespace std;


const string PROGRAM_DESCRIPTION = "Program will calculate the amount "
"accumulated every month you save, \nuntil you reach your goal. ";
const string ENTER_DOLLAR_AMOUNT_MONTHLY = "Enter the dollar amount to be "
"saved each month: ";




int main()
{
    double dollarSavedPerMonth; 


    //displays program description
    cout << PROGRAM_DESCRIPTION << endl << endl;

    //Prompts user to enter dollar amount to be saved monthly, will validate
    //input by calling VerifyDollar
    dollarSavedPerMonth = VerifyDollar(ENTER_DOLLAR_AMOUNT_MONTHLY);
    cout << endl;



    return 0;
}




double VerifyDollar (string Prompt)
{
    const string INVALID_DOLLAR_AMOUNT = "Invalid amount, re-enter monthly "
    "savings amount.";
    double dollarSaved;

    cout << Prompt;
    cin >> dollarSaved;

    while (dollarSaved < 5 || dollarSaved > 5000)
    {
          cout << INVALID_DOLLAR_AMOUNT;
          cout << endl;
          cout << Prompt;
          cin >> dollarSaved;
    }
    return dollarSaved;
}
Jessica
  • 119
  • 1
  • 2
  • 10
  • 2
    Note: When you use `std::string`, include the `` header. In any case, this should not even get to the linking part because you use `VerifyDollar` before declaring it, so how you have a linker error is beyond me. – chris Feb 08 '14 at 23:11
  • Are you using an multi-target IDE? I'd guess the project settings are wrong. – jerry Feb 08 '14 at 23:14
  • added prototype since function is defined after main – Jessica Feb 08 '14 at 23:21
  • Does this answer your question? [undefined reference to \`WinMain@16'](https://stackoverflow.com/questions/5259714/undefined-reference-to-winmain16) – VLL Jul 26 '23 at 08:43

1 Answers1

7

You do indeed lack a WinMain() function anywhere in that code.

If memory serves me well, WinMain() is the entry point for a Win32 GUI app. I am assuming your IDE asked you for a "project type" of some sort, and you asked for a Windows app instead of a Console one.

Under that assumption, something in your project is configured to call WinMain(), which you did not define, hence the linker error.

Enrico Granata
  • 3,303
  • 18
  • 25
  • when I'm able to choose a project I get a bunch of options...Basic (windows app, console app, static library, dll, empty project) Multimedia (direct 3D, Open GL) Win 32 (file editor, mdi editor, animation example) Console (hello world, input loop, jackpot, open MP) I've always selected hello world, I must have just selected something else, after copying the code and re selecting the project it works – Jessica Feb 08 '14 at 23:19
  • You don't need a `WinMain` even with a Windows subsystem (and indeed I get along fine without all the time). See http://stackoverflow.com/questions/5259714/undefined-reference-to-winmain16 – chris Feb 08 '14 at 23:22