pragma代码部分和数据部分有什么用?

ras*_*hok 5 c compiler-construction pragma c-preprocessor

如果我在c源代码文件中使用以下两行,那么数据段和文本段究竟会发生什么?

#pragma CODE_SECTION(func1, "Sec1")
#pragma DATA_SECTION(globalvar1, "Sec2")
Run Code Online (Sandbox Code Playgroud)

use*_*702 5

来源(包含示例):http://hi.baidu.com/jevidyang/blog/item/6d4dc436d87e3a300b55a918.html

注意:#pragma是特定于编译器的,因此编译器的语法可能会有所不同.

DATA_SECTION pragma在名为section name的节中为符号分配空间.C语言中pragma的语法可以是:

#pragma DATA_SECTION (symbol, "section name");
Run Code Online (Sandbox Code Playgroud)

C++中pragma的语法可以是:

#pragma DATA_SECTION ("section name");
Run Code Online (Sandbox Code Playgroud)

如果要将数据对象链接到与.bss部分分开的区域,则DATA_SECTION编译指示很有用.


CODE_SECTION pragma在名为section name的节中为func分配空间.如果要将代码对象链接到与.text部分分开的区域,则CODE_SECTION pragma非常有用.C语言中的pragma语法可以是:

#pragma CODE_SECTION (func, "section name")
Run Code Online (Sandbox Code Playgroud)

C++中pragma的语法可以是:

#pragma CODE_SECTION ("section name")
Run Code Online (Sandbox Code Playgroud)

  • 没有"C/C++中的语法是......"!DATA_SECTION和CODE_SECTION完全由编译器特定,完全不受任何标准的支持.会发生什么取决于编译器.我知道有几个编译器支持CODE_SECTION和DATA_SECTION但语法完全不同. (2认同)