Microsoft KB Archive/44386

{|
 * width="100%"|

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 &quot;?&quot; 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_ &quot;compact&quot; #elif defined (M_I86SM) #define _MEMORY_MODEL_ &quot;small&quot; #elif defined (M_I86MM) #define _MEMORY_MODEL_ &quot;medium&quot; #elif defined (M_I86HM) #define _MEMORY_MODEL_ &quot;huge&quot; #elif defined (M_I86LM) #define _MEMORY_MODEL_ &quot;large&quot; #else #error &quot;ERROR: unknown memory model!!&quot; #define _MEMORY_MODEL_ &quot;**UNKNOWN**&quot; #endif #pragma message (&quot;Using the &quot; _MEMORY_MODEL_ &quot; memory model...&quot;) void main(void); void main(void) { printf(&quot;hello, world\n&quot;); } 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