- Instead of building custom function in a C program, we can include any custom function into a custom library. In this way, we could reuse the custom function between different program.
- First, we maintain the same main(), but we remove all custom financial functions. Instead we included a statement included “fin.h” so that the compiler will search for the header file.
int main (void)
printf ("Please enter the following:\n");
printf ("Rate of return:(In decimal 50%% is 0.5)");
scanf ("%lf", &myrate);
printf ("Number of terms:(No decimals): ");
scanf ("%d", &myterm);
printf ("The principal amount: ");
scanf ("%lf", &myprincipal);
myreturn = tvm (myrate, myterm, myprincipal);
printf ("Your return after %d term is $%.2lf.\n", myterm, myreturn);
- Next, we create a header file (“fin.h”) that will include all financial functions in the future.
double tvm (double rate, int terms, double principal);
- Finally, we create a new program call finfn.c (as in financial function). The custom function will be place here.
double tvm (double rate, int terms, double principal)
dn = terms;
pp = pow (1+rate, dn);
return principal * pp;
- The purpose splitting the program is such that tvm function can be reuse as a custom library in another program.
- We can compile all the program #gcc -Wall tvm.c finfn.c -o tvm –lm
- However, we don’t have to compile finfn.c every time of there is no changes.
- One way is to create an object file during compilation instead of create executable.
- We compile finfn.c first: #gcc -Wall -c finfn.c -o finlib.o
- With the object file available, we can create another program tvm2 using the same tvm function:
int main (void)
double rate = 0.025;
int term = 10;
double principal = 1000;
double result = 0;
result = tvm (rate, term, principal);
printf ("The return of $1000 investment with a rate of 2.5 percent in 10 years will give you $%.2lf.\n", result);
- Then we compile tvm2.c first before linking:
#gcc -Wall -c tvm2.c -o tvm2.o
- We can link both program as follows:
#gcc tvm.o finlib.o -lm -o tvm
#gcc tvm2.o finlib.o -lm -o tvm2
- In the example, we compile 2 programs using the custom function in one object file.
- Alternatively, we can compile straight from tvm2.c to executable like below:
#gcc -Wall tvm2.c finlib.o -lm -o tvm2