How to enable linking floating point library in TurboC?

From the comp.os.msdos.programmer FAQ:

“Floating point formats not linked” is
a Borland run-time error (Borland C or
C++, Turbo C or C++). Borland’s
compilers try to be smart and not link
in the floating- point (f-p) library
unless you need it. Alas, they all get
the decision wrong. One common case is
where you don’t call any f-p
functions, but you have %f or other
f-p formats in scanf() or printf()
calls. The cure is to call an f-p
function, or at least force one to be
present in the link.

To do that, define this function
somewhere in a source file but don’t
call it:

static void forcefloat(float *p)   
{
     float f = *p;
     forcefloat(&f);    
}

It doesn’t have to be in the module
with the main program, as long as it’s
in a module that will be included in
the link.

Leave a Comment