ID: 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
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.
/* 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 8.00c KBCategory: kbtool KBSubcategory: CLIss Keywords : kb16bitonly
Last Reviewed: July 18, 1997