Determining the Memory Model for Conditional CompilationLast reviewed: July 17, 1997Article ID: Q44386 |
6.00 6.00a 6.00ax 7.00 | 6.00 6.00a | 1.00 1.50
MS-DOS | OS/2 | WINDOWSkbtool 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
SUMMARYThere 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 = HugeThis 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 <stdio.h>#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
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |