ID: Q85503
7.00 | 1.00 1.50 MS-DOS | WINDOWS kbtool kbdocerr
The information in this article applies to:
- Microsoft C/C++ for MS-DOS, versions 7.0
- Microsoft Visual C++ for Windows, versions 1.0 and 1.5
There is a documentation error relating to the use of Windows entry/exit code optimization switches for Microsoft C/C++ versions 7.0 and 8.0. The article below corrects this and provides additional information about the use of the following switches:
/GA /GD /GEf /Gw /GW /Gq
With Microsoft C/C++ versions 7.0 and 8.0, the documentation for the /Gw and /GW switches is incorrect in both the online help and the "Microsoft C/C++ Environment and Tools" manual on page 522 and the "Command Line User's Guide" manual starting on page 143. The section on /Gw and /GW incorrectly states that /Gw works only on functions explicitly marked as __export, while /GW works on those not marked as __export. In fact, neither switch is affected by the presence or absence of __export. Both switches only affect __far functions and ignore __near functions.
The /GA and /GD functions do require that functions be explicitly marked as __export if the switch is to affect them.
As stated in the documentation, /Gw, /GW, and /Gq should be used only for programs that must run in real mode Windows. Because real mode is not available under Windows 3.1, most programs should be built using the /GA switch (/GD for DLLs).
Note: /Gq is for use only when absolute compatibility is needed with the Microsoft C version 6.0 compiler /GW switch. The code generated is slightly less efficient than that generated by the C 7.0 /GW switch.
If you are using the /GA or /GD switch, and your code does not explicitly have the __export keyword for the callback functions, you may use the /GEf switch to cause all far functions (coded as __far) to be treated as exports (as though __export had been specified). If __export is explicitly coded, these functions do not need to be declared in the EXPORTS section of the definition file. It is recommended that __export be explicitly coded when new code is written.
The /GEf switch causes all functions to be treated as __export if used under medium or large memory model. In this case, the only way to control exporting is to explicitly code __export and not use /GEf.
Additional reference words: 1.00 1.50 7.00 8.00 8.00c _export _far entry exit KBCategory: kbtool kbdocerr KBSubcategory: CLIss Keywords : kb16bitonly
Last Reviewed: November 12, 1998