Article: Q61674
Product(s): See article
Version(s): 7.00
Operating System(s): MS-DOS
Keyword(s): ENDUSER | SR# S900405-131 buglist7.00 S_QuickC | mspl13_basic
Last Modified: 11-MAY-1990
When CALLing Microsoft QuickC version 2.00 from Microsoft BASIC
Professional Development System (PDS) version 7.00, the machine hangs
if a single- or a double-precision number is passed to the C routine
and a comparison of that single- or double-precision number is then
performed in the C routine.
To work around this problem, do one of the following:
1. CALL QuickC from QuickBASIC version 4.50 or from Microsoft BASIC
Compiler versions 6.00 or 6.00b.
2. Use Microsoft C Compiler version 5.10 instead of QuickC.
3. Pass an integer or a long integer to QuickC instead of the
floating-point number.
The program below demonstrates the problem.
Compile and LINK Instructions
-----------------------------
BC Basside.bas ;
QCL /AM /c Cside.c ;
LINK Basside + Cside,,,BRT70ENR.lib + MLIBCE.LIB ;
Code Example
------------
' Here is the BASIC Code
DECLARE SUB Mycfun CDECL (temp#)
CLS
PRINT "On the basic side"
INPUT "Enter the double precision number "; one#
CALL Mycfun(one#)
LOCATE 10, 10
PRINT "Enter any key to end"
SLEEP
CLS
END
' Here is the C code
#include <c:\qc2\include\stdio.h>
void Mycfun( double *testdoub)
{
printf("I am in the C routine %lf \n",*testdoub);
if ((*testdoub) > 2000.0)
{
printf ("In the then \n");
}
else
{
printf("In the else \n");
};
printf ("Returning to BASIC \n");
}