PRB: #pragma code_seg() Affects Compiler-Generated Functions

ID: Q122848


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), included with:
    • Microsoft Visual C++ 32-bit Edition, versions 1.0, 2.0, 2.1, 4.0, 5.0


SYMPTOMS

When you use #pragma code_seg() in your C++ code, compiler-generated functions are placed in the last code segment or section that is specified with #pragma code_seg() instead of being placed in the default code segment or section.


RESOLUTION

If you want compiler generated functions to be placed in the default code segment, include an additional #pragma code_seg() that sets the code segment back to the default:


   #pragma code_seg() 


STATUS

This behavior is by design.


MORE INFORMATION

The following sample can be used to demonstrate this behavior. Compile the file with /DMY_SECTION, and the compiler-generated code is placed in the MY_SECTION section. To place the compiler-generated functions in the default code section, compile without MY_SECTION defined.

You can determine into which section the code is placed by looking at the .COD listing file, generated by using the /FAsc compiler option, or the linker mapfile, generated by using the /MAP:filename link option.

Sample Code to Demonstrate Behavior


   /* Compile options needed: /Fc /DMY_SECTION
   */ 
   class base
   {
       int i;
   };

   class Simple: virtual base    // Classes with virtual base classes are
   {                             // non-trivial, and require constructors
   };

   #pragma code_seg("MY_SECTION")

   void main()
   {
       Simple Simple_Class;
   }

   #ifndef MY_SECTION           // Define MY_SECTION to cause compiler
   #pragma code_seg()           // generated code to be placed in the
   #endif                       // MY_SECTION section. 

Additional query words: 8.00 9.00 pragma

Keywords : kbcode kbCompiler kbCPPonly kbVC kbVC100 kbVC200 kbVC210 kbVC400 kbVC500
Version : winnt:
Platform : winnt
Issue type : kbprb


Last Reviewed: January 31, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.