pragma 命令

1、#pragma message(“ ”) 

编译器编译到此处,在Build窗口中打印相应文本信息。

2、#pragma error “” 
编译器编译到此处,在Build窗口中产生错误并打印其文本信息。

3、#pragma inline [=forced | never] 
用这个指令是建议编译将这条指令后面的函数内联到调用它的函数的函数体中去。 
当#pragma inline = forced,则强制让编译器对函数内联,如果内联不成功,会发出警告消息。

4、#pragma location = {address | register | NAME} 
该指令用处

  1. 定位该指令之后的全局或静态变量到指定的absolute address上。其中变量必须定义为__no_init。 
    pragma location = address 等价于 @ address,其中变量也必须定义为__no_init 。 
    示例: 
    __no_init volatile char alpha @ 0xFF2000 
    运用绝对地址定位,还需注意地址的对齐问题。

  2. 定位该指令之后的变量到指定寄存器中,其中该变量必须声明为__no_init,同时该变量的作用域为整个文件。 
    ===========register(寄存器R4-R11) 
    pragma location = register 等价于 @ register,其中变量也必须定义为__no_init

  3. 将该指令之后的函数或变量放置到一个指定的section中。其中,不要试图将那些通常放在不同section的变量放置在同一section中。 
    =============NAME(A user-defined section name; cannot be a section name predefined for use by the compiler and linker. 
    pragma location = section 等价于 @ section

示例 
变量放置在自定义的section中。 
__no_init int alpha @ “MY_NOINIT”; /* OK */ 
#pragma location=”MY_CONSTANTS” 
const int beta; /* OK */

函数放置在自定义section中。 
void f(void) @ “MY_FUNCTIONS”; 
void g(void) @ “MY_FUNCTIONS” 


#pragma location=”MY_FUNCTIONS” 
void h(void);

  1. #pragma required = symbol 
    #pragma required确保链接输出中包括某个符号所需的另一个符号。该指令必须放在紧邻第二个符号的前边。如果符号在应用中不可见,使用该指令。例如,如果仅通过某个变量所在的段对其进行间接引用,必须使用#pragma required。 
    eg: 
    const char copyright[] = “Copyright by me”; 
    #pragma required=copyright 
    int main() 

    /* Do something here. */ 

    Even if the copyright string is not used by the application, it will still be included by the 
    linker and available in the output.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CATHY_T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值