Skip to content

Latest commit

 

History

History
100 lines (79 loc) · 2.77 KB

File metadata and controls

100 lines (79 loc) · 2.77 KB
title section | Microsoft Docs
ms.custom
ms.date 11/04/2016
ms.reviewer
ms.suite
ms.technology
cpp-tools
ms.tgt_pltfrm
ms.topic article
f1_keywords
section_CPP
vc-pragma.section
dev_langs
C++
helpviewer_keywords
pragmas, section
section pragma
ms.assetid c67215e9-2c4a-4b0f-b691-2414d2e2d96f
caps.latest.revision 8
author corob-msft
ms.author corob
manager ghogen
translation.priority.ht
de-de
es-es
fr-fr
it-it
ja-jp
ko-kr
ru-ru
zh-cn
zh-tw
translation.priority.mt
cs-cz
pl-pl
pt-br
tr-tr

section

Creates a section in an .obj file.

Syntax

  
#pragma section( "section-name" [, attributes] )  

Remarks

The meaning of the terms segment and section are interchangeable in this topic.

Once a section is defined, it remains valid for the remainder of the compilation. However, you must use __declspec(allocate) or nothing will be placed in the section.

section-name is a required parameter that will be the name of the section. The name must not conflict with any standard section names. See /SECTION for a list of names you should not use when creating a section.

attributes is an optional parameter consisting of one or more comma-separated attributes that you want to assign to the section. Possible attributes are:

read
Allows read operations on data.

write
Allows write operations on data.

execute
Allows code to be executed.

shared
Shares the section among all processes that load the image.

nopage
Marks the section as not pageable; useful for Win32 device drivers.

nocache
Marks the section as not cacheable; useful for Win32 device drivers.

discard
Marks the section as discardable; useful for Win32 device drivers.

remove
Marks the section as not memory-resident; virtual device drivers (VxD) only.

If you do not specify attributes, the section will have read and write attributes.

Example

In the following example, the first instruction identifies the section and its attributes. The integer j is not put into mysec because it was not declared with __declspec(allocate); j goes into the data section. The integer i does go into mysec as a result of its __declspec(allocate) storage-class attribute.

// pragma_section.cpp  
#pragma section("mysec",read,write)  
int j = 0;  
  
__declspec(allocate("mysec"))  
int i = 0;  
  
int main(){}  

See Also

Pragma Directives and the __Pragma Keyword