Article: Q60135
Product(s): See article
Version(s): 7.00
Operating System(s): MS-DOS
Keyword(s): ENDUSER | SR# S900114-12 | mspl13_basic
Last Modified: 3-APR-1990
When placing a C program using the functions from SIGNAL.H into a
Quick library for QuickBASIC (QB.EXE) or QuickBASIC Extended
(QBX.EXE), LINK flags multiple occurrences of L2025 "Symbol defined
more than once" in the CRT0DAT.ASM module of the C library. These
errors are not affected by the /NOE (No Extended library search)
option. This conflict is a limitation of Quick libraries. The SIGNAL.H
functions work correctly when linked with a compiled BASIC program.
This information applies to Microsoft QuickBASIC Versions 4.00, 4.00b,
and 4.50, QB.EXE from Microsoft BASIC Compiler Versions 6.00 and 6.00b
for MS-DOS, QBX.EXE from Microsoft BASIC Professional Development
System (PDS) Version 7.00 for MS-DOS, Microsoft QuickC Versions 1.00,
1.01, 2.00, and 2.01, and Microsoft C Compiler Versions 5.00 and 5.10
for MS-DOS.
When the C code from the example below is compiled and linked into a
Quick library as shown, the error L2025 is cited multiple times:
QCL -c -AL signal.c ; (QuickC)
CL -c -AL signal.c ; (C Compiler)
LINK /Q signal,,,qbxqlb; (LINK -> QLB in BC7)
LINK /Q signal,,,bqlb45; (LINK -> QLB in QB45)
Code Example
------------
The following code example demonstrates calling the raise() function
from the SIGNAL.H file in C. When compiled and linked to a QLB as
listed above, multiple L2025 errors occur:
#include <signal.h>
void test()
{
printf("SigFPE: %d\n",raise(SIGFPE)); /* Signal float error */
}
The following BASIC source demonstrates how to call the above C
routine:
DECLARE SUB test CDECL ()
CALL test
The above BASIC program compiles and links correctly to an EXE despite
the fact that it fails to create a usable QLB file. The BASIC compile
and link lines are as follows:
BC testsig;
LINK /NOE testsig+signal;
The working EXE produces the following output:
SigFPE: -1