Simple C++ Error: "... undeclared (first use this function)"

c++

Solution

You need forward declaration before your `main`:

double truncate(double d);
double round(double d);

You could just define your functions before main, that will solve the problem too:

#include <iostream>
#include <math.h>

using namespace std;

#define CENTIMETERS_IN_INCH 2.54
#define POUNDS_IN_KILOGRAM 2.2

// round result
double round(double d) {
   return floor(d + 0.5);
}

// round and truncate to 1 decimal place
double truncate(double d) {
   return round(double * 10) / 10;
}

int main() {
...
}

Problem

I am working on my first C++ program for school. For some reason I am getting the following error when I try to compile it: ``` `truncate' undeclared (first use this function) ``` Full Source: ``` #include <iostream> #include <math.h> using namespace std; #define CENTIMETERS_IN_INCH 2.54 #define POUNDS_IN_KILOGRAM 2.2 int main() { double feet, inches, centimeters, weight_in_kg, weight_in_lbs; // get height in feet and inches cout << "Enter height (feet): "; cin >> feet; cout << "Enter (inches): "; cin >> inches; // convert feet and inches into centimeters centimeters = ((12 * feet) + inches) * CENTIMETERS_IN_INCH; // round 2 decimal places and truncate centimeters = truncate(centimeters); printf("Someone that is %g' %g\" would be %g cm tall", feet, inches, centimeters); // weights for bmi of 18.5 weight_in_kg = truncate(18.5 * centimeters); weight_in_lbs = round(weight_in_kg * POUNDS_IN_KILOGRAM); printf("18.5 BMI would correspond to about %g kg or %g lbs", weight_in_kg, weight_in_lbs); // weights for bmi of 25 weight_in_kg = truncate(25 * centimeters); weight_in_lbs = round(weight_in_kg * POUNDS_IN_KILOGRAM); printf("25.0 BMI would correspond to about %g kg or %g lbs", weight_in_kg, weight_in_lbs); // pause output cin >> feet; return 0; } // round result double round(double d) { return floor(d + 0.5); } // round and truncate to 1 decimal place double truncate(double d) { return round(double * 10) / 10; } ``` Any help would be appreciated. Thanks.

Original source