KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q66303: Errors in Chapter 16 of Advanced Programming Techniques

Article: Q66303
Product(s): See article
Version(s): 6.00 6.00a
Operating System(s): OS/2
Keyword(s): ENDUSER | docerr | mspl13_c
Last Modified: 19-JAN-1991

Due to printing problems and proofing oversight, there are several
documentation errors, shown in detail below, in Chapter 16 of the
"Microsoft C Advanced Programming Techniques" manual that shipped with
C version 6.00 and 6.00a. These errors can cause various problems if
you are attempting to learn how to use C 6.00 to develop OS/2
applications. Some examples of the problems are as follows:

1. Sample code fails to compile.

2. Sample application fails to function correctly.

3. Running a sample application causes SYS2070 error (Unable to Demand
   Load application segment xxxxx) from the operating system.

The following are documentation errors occurring in Chapter 16 of the
"Microsoft C Advanced Programming Techniques" manual, and their
corrections:

1. Page 404; example at top of page:

      #pragma stack_check(off)

   Should be as follows:

      #pragma check_stack(off)

   Program will not compile as is.

2. Page 404; example at top of page:

      "while (s = TargetBuff)" and "while (d = TargetBuff)"

   Both should be changed to the following:

      "while (s >= TargetBuff)" and "while (d >= TargetBuff)"

   The sample program will not function correctly as is.

3. Page 402; middle of page (details of /ML and /MD switch).
   Page 404; bottom of page.
   Page 410; bottom of page.
   Page 412; top of page (in the paragraph at the top).
   Page 412; bottom of page (in the example).

   All define switches to the compiler should have underscores instead
   of spaces (that is, /D MT should be /D_MT, and /D DLL should be /D_DLL.

   Without this, the correct sections of the include files will not
   be used. Symptoms include incorrect program operation and link
   failure (especially obvious with floating-point math functions).

4. Page 407; top of page.
   Page 411; bottom of page (end of Step 3).
   Page 412; bottom of page.

      All the link lines should include /NOI.

   Without this, the programs that use run-time in a DLL will likely
   fail at run-time due to name mismatch. In the SYS2070 error
   message from the OS, the function name will probably be uppercase
   with a leading underscore. The actual function name is probably
   mixed case.

5. Page 411; top of page (end of Step 2).

   This step defines the building of the .DEF file for the
   application-specific DLL. The .DEF file should also include "DATA
   MULTIPLE." This fact was mentioned on Page 398.

   If this is not done, the program will likely run correctly until a
   second process attempts to gain access to the DLL. At that time,
   the second process will likely overwrite the run-time instance data
   from the first process.

Microsoft is researching this problem and will post new information
here as it becomes available.

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.