• 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")
  • 相关阅读:
    SQLSERVER 中GO的作用
    工作相关工具介绍
    SQL Server 没有足够的内存继续执行程序 (mscorlib)的解决办法
    glyphicons-halflings-regular.woff2 not found 前台错误修正
    Asp.net MVC Pager分页实现
    金融相关网站
    Excel 函数使用
    C# 使用 Invoke 实现函数的白盒 UT 测试
    反编译工具
    SQL Server 数据库修改后不允许保存
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8457965.html
Copyright © 2020-2023  润新知