Article: Q122848
Product(s): Microsoft C Compiler
Version(s): 1.0,2.0,2.1,4.0,5.0
Operating System(s):
Keyword(s): kbcode kbCompiler kbCPPonly kbVC kbVC100 kbVC200 kbVC210 kbVC400 kbVC500
Last Modified: 15-FEB-2002
-------------------------------------------------------------------------------
The information in this article applies to:
- The C/C++ Compiler (CL.EXE), included with:
- Microsoft Visual C++, 32-bit Editions, versions 1.0, 2.0, 2.1, 4.0
- Microsoft Visual C++, 32-bit Enterprise Edition, version 5.0
- Microsoft Visual C++, 32-bit Professional Edition, version 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
Technology : kbVCsearch kbAudDeveloper kbCVCComp
Version : :1.0,2.0,2.1,4.0,5.0
Issue type : kbprb
=============================================================================