Help a C++ coder see the light

Dave Cole djc at object-craft.com.au
Fri Jan 31 02:33:19 CET 2003


>>>>> "Brandon" == Brandon Van Every <vanevery at 3DProgrammer.com> writes:

Brandon> Dave Brueck wrote:
>> On Thu, 30 Jan 2003, Mark Charsley wrote:
>>> I'm used to the compiler/linker giving me a lot of reassurance
>>> that my code works.
>>  That's common, but in many cases it's a _false_ sense of
>> reassurance.

Brandon> It kills many problems before they arise.

>> Even in C++ I end up checking all uses of a refactored function
>> despite what the compiler says because it can catch only the
>> simplest of problems.

Brandon> Sounds like your functions must do an awful lot if they need
Brandon> so much checking.  Maybe your functions should be smaller,
Brandon> more incremental, easier to verify?

Ahhh yes, the excellent safety net of the compiler/linker.  It
compiles, my work is done...

- - calculate-wage.c - - - - - - - - - - - - - - - - - - - - -
#include <stdio.h>

float calculate_weekly_wage(float hours, float rate)
{
    if (hours > 37.5)
	return 37.5 * rate + (37.5 - hours) * rate * 1.5;
    return hours * rate;
}

int main(int argc, char *argv[])
{
    float hours = 45.0;
    float rate = 10.0;

    printf("Worked %.2f hours at $%.2f hourly rate.\n", hours, rate);
    printf(" -> wage (including overtime) is $%.2f.\n",
	   calculate_weekly_wage(hours, rate));
    return 0;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

% cc calculate-wage.c -o calculate-wage   
% ./calculate-wage 
Worked 45.00 hours at $10.00 hourly rate.
 -> wage (including overtime) is $262.50.

What!!!  How can that be!!!  It passed through the compiler/linker
safety net.

Ahh...  This gcc is crap.  Maybe I need to use the intel compiler.

- Dave

-- 
http://www.object-craft.com.au




More information about the Python-list mailing list