83.#pragma詳解
阿新 • • 發佈:2018-02-22
depth 速度 def stop get gda .pch 程序 開啟
- 創建數據段
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
- 限定函數作用域
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();
- 設置自定義函數為內聯函數
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詳解