Microsoft KB Archive/44386

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Determining the Memory Model for Conditional Compilation

Q44386

6.00 6.00a 6.00ax 7.00 | 6.00 6.00a | 1.00 1.50 MS-DOS | OS/2 | WINDOWS kbtool ---------------------------------------------------------------------- The information in this article applies to: The Microsoft C/C++ Compiler (CL.EXE) included with: - Microsoft C for MS-DOS, versions 6.0, 6.0a, and 6.0ax - Microsoft C for OS/2, versions 6.0, and 6.0a - Microsoft C/C++ for MS-DOS, versions 7.0 - Microsoft Visual C++ for Windows, versions 1.0 and 1.5 ---------------------------------------------------------------------- SUMMARY ======= There is a predefined identifier that can be used to allow the preprocessor to determine which memory model has been chosen for the current compilation. The identifier is M_I86?M, where "?" is an identifier for one of the following five memory models: S = Small M = Medium L = Large C = Compact H = Huge This identifier can be used with a preprocessor command to produce conditional compilation dependent upon the memory model. An example of its use is shown below. Sample Code ----------- /* Compile options needed: none */ /* * * This example demonstrates how to use the C compiler M_I86?M values. * It also shows other various preprocessor components. The memory * model is displayed using the message() pragma. If the memory model * is not recognized by the program, the compilation terminates using * the #error preprocessor directive. The identifier _MEMORY_MODEL_ * has been chosen arbitrarily, and has no special value to the C * compiler. * */ #include #if defined (M_I86CM) #define _MEMORY_MODEL_ "compact" #elif defined (M_I86SM) #define _MEMORY_MODEL_ "small" #elif defined (M_I86MM) #define _MEMORY_MODEL_ "medium" #elif defined (M_I86HM) #define _MEMORY_MODEL_ "huge" #elif defined (M_I86LM) #define _MEMORY_MODEL_ "large" #else #error "ERROR: unknown memory model!!" #define _MEMORY_MODEL_ "**UNKNOWN**" #endif #pragma message ("Using the " _MEMORY_MODEL_ " memory model...") void main(void); void main(void) { printf("hello, world\n"); } Additional reference words: kbinf 1.00 1.50 6.00 6.00a 6.00ax 7.00 8.00 8.00c KBCategory: kbtool KBSubcategory: CLIss

Keywords : kb16bitonly
Issue type :
Technology : kbVCsearch kbAudDeveloper kbCVCComp


Last Reviewed: May 5, 2001
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.