83.#pragma详解

Posted xiaochi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了83.#pragma详解相关的知识,希望对你有一定的参考价值。


  • 创建数据段

 

1 //创建数据段
2 #pragma  data_seg("fangfangdata")
3 int my_data_seg = 0;
4 #pragma data_seg()
  • 与数据段连接,实现数据通信,分享
    1 //实现数据通信,分享
    2 #pragma comment(linker,"/SECTION:cgwdata,RWS")

     

  • 测试,用数据段使程序只能打开一次
    1 if (my_data_seg > 0)
    2     {
    3         printf("程序只能启动一个");
    4         MessageBoxA(0, "no", "no", 0);
    5         return;
    6     }
    7     my_data_seg++;

     


  • 限定函数作用域
    1 #pragma  deprecated(run1,run2,run3)//限定函数作用域

     

  • 用法示例
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void run1()
     5 {
     6 
     7 }
     8 void run2()
     9 {
    10 
    11 }
    12 void run3()
    13 {
    14 
    15 }
    16 
    17 void main()
    18 {
    19 
    20     run1();
    21     run2();
    22     run3();
    23 #pragma  deprecated(run1,run2,run3)//限定函数作用域
    24     run1();
    25     run2();
    26     run3();
    27 
    28 }

     


  • 设置自定义函数为内联函数
    1 #pragma intrinsic(run1,run2) //设置为内联函数

     

  • 设置系统函数为内联函数
    1 #pragma intrinsic(memset, strlen) //设置定定义函数,系统函数 为内联函数

     

  • 取消内联函数
    1 #pragma  funciton(run1)//取消内联函数

     

  • 用法示例
 1 #include<stdio.h>
 2 #include <stdlib.h>
 3 #include<string.h>
 4 void run1()
 5 {
 6     puts("123");
 7 }
 8 void run2()
 9 {
10     puts("123456");
11 }
12 #pragma intrinsic(run1,run2) //设置为内联函数
13 
14 #pragma intrinsic(memset, strlen) //设置定定义函数,系统函数 为内联函数
15 void main() 
16 {
17     run1();
18 
19     run2();
20 
21 #pragma  funciton(run1)//取消内联函数
22     getchar();
23 }
  • 设置内联的深度,开启内联或者禁止内联,自动开启内联,加快代码速度...
    1 #pragma inline_depth(4)//设置内联的深度
    2 #pragma inline_recuresion(on) //on off //开启内联或者禁止内联
    3 #pragma  auto_inline(on)//自动开启内联,加快代码速度
    4 #pragma hdrstop("1.pch")
    5 #pragma check_stack(on)//off自动检查栈
    6 
    7 //g全局优化,s,t//  代码体积与速度   y框架指针
    8 #pragma optimize("g" ,on)//代码优化

     


  • 常量字符串分配到run函数所在的代码  ,声明一个字符串分配到函数的所在,函数无法定义
     1 #include <stdio.h>
     2 #include<stdlib.h>
     3 void run();
     4 void run1()
     5 {
     6 
     7 }
     8 //常量字符串分配到run函数所在的代码  ,声明一个字符串分配到函数的所在,函数无法定义
     9 #pragma  alloc_text("mysection",run)
    10 
    11 void main()
    12 {
    13     char *p = "mysection";
    14     printf("%s", p);
    15     run1();
    16 
    17     getchar();
    18 
    19 }

     


  • #pragma push_macro pop_macro
  • 用法示例
    1 //Y 的宏进栈,保存原来的宏,仍然生效
    2 #pragma  push_macro("Y")
    3 
    4 //Y=80生效
    5 #define Y 80  
    6 
    7 //Y 的宏出栈,取消Y的生效,让原来的Y生效
    8 #pragma  pop_macro("Y")

     

 

以上是关于83.#pragma详解的主要内容,如果未能解决你的问题,请参考以下文章

向代码致敬,寻找你的第83行

#paragma详解

C++ #pragma comment语法(预处理指令)

(转) Java中的负数及基本类型的转型详解

详解Android WebView加载html片段

一段C语言 反汇编代码,要求详解每句含义