Compiler Bugs
Ray Mitchell
mitch at manta.NOSC.MIL
Thu Mar 28 10:34:06 AEST 1991
This is kind of a collection of items pertaining to ANSI C, Microsoft C, and
Borland C.
I would appreciate it if someone could give me an address, phone number, and
correct document number where I may order the official ANSI C standard.
Borland Bug?
Has anybody found that huge arrays (i.e., 256K) don't work correctly on
Borland's C++?
This may seem like flame Microsoft and praise Borland but it is not intended
to be that. I have noticed three elementary things which the Borland C
compilers handle properly but Microsoft does not. Maybe someone else has
encountered them.
1.
I noticed that with versions 6.0 and 6.01 of Microsoft C, some of my
programs which do a lot of far allocing and reallocing run out of memory
where they didn't on previous versions and don't with Borland. Upon
contacting Microsoft, I was told to call some new function in between
reallocs to free up the memory (I don't recall the function name). It
worked, however, the program ran slower by a factor of 10. They then
told me to check Compu-Serv for a good memory allocator. ???
2.
Here's one that produces interesting results with Microsoft 5.0, 5.1, 6.0,
and 6.01. The number of characters scanned is supposed to be placed into
the variable "count". Depending on what you are actually scanning for, the
results can be anywhere fron bizarre to almost correct - but never correct.
Borland handles it properly.
int value, count;
sscanf("1", "%d%n", &value, &count);
printf("%d %d", value, count);
3.
Here's one that bombs Microsoft 5.0, 5.1, 6.0, and 6.01 at run time.
Apparently they have overlooked the fact that the type of the conditional
expression is double, regardless of the outcome. Maybe, on the other hand,
the preprocessor has optimized the code into oblivion.
Borland handles it properly.
printf("%f", 1 ? 2 : 3.0);
More information about the Comp.lang.c
mailing list