日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

预编译指令与相关宏小结

發布時間:2023/12/31 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 预编译指令与相关宏小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//========================================================================
//TITLE:
//??? 預編譯指令與相關宏小結
//AUTHOR:
//??? norains
//DATE:
//??? Saturday? 10-December-2007
//Environment:
//??????? EVC4.0 + Windows CE 5.0 Standard SDK
//========================================================================

1.預編譯指令

01) #
? 空指令,無任何效果

02) #include?????
? 包含一個源代碼文件

03) #define
? 定義宏
?
04) #undef
? 取消已定義的宏

05) #if
? 如果給定條件為真,則編譯下面代碼
?
06) #else??????????????????????????????????
?? 作為其他預處理的剩余選項進行編譯

07) #ifdef
? 如果宏已經定義,則編譯下面代碼

08) #ifndef
? 如果宏沒有定義,則編譯下面代碼

09) #elif
? 如果前面的#if給定條件不為真,當前條件為真,則編譯下面代碼

10) #endif
? 結束一個#if……#else條件編譯塊
?
11) #line
? 改變當前的行數和文件名稱
?
12) #pragma
? 為編譯程序提供非常規的控制流信息

13) #error
? 停止編譯并顯示錯誤信息
?
?
?
?
?
2.與編譯器相關的宏

??? 文中只列出部分相關宏,如果想查看完整的宏列表,可參考MSDN的"Predefined Macros"一節

01) _MSC_VER
??? Microsoft 編譯器的版本宏.???
??? 各版本編譯器相應的數值如下表所示:
???
??????? Compiler?????????????????????????????? _MSC_VER value
?? --------------------??????????????????? -----------------------
?? C Compiler version 6.0????????????????????????? 600
?? C/C++ compiler version 7.0????????????????????? 700
?? Visual C++, Windows, version 1.0??????????????? 800
?? Visual C++, 32-bit, version 1.0???????????????? 800
?? Visual C++, Windows, version 2.0??????????????? 900
?? Visual C++, 32-bit, version 2.x???????????????? 900
?? Visual C++, 32-bit, version 4.0???????????????? 1000
?? Visual C++, 32-bit, version 5.0???????????????? 1100
?? Visual C++, 32-bit, version 6.0???????????????? 1200
?? Visual C++, 32-bit, version 2002??????????????? 1300
?? Visual C++, 32-bit, version 2003??????????????? 1310
?? Visual C++, 32-bit, version 2005??????????????? 1400
?? Embedded Visual C++, 32-bit,version 4.0??????? Cross 1200 - 1202
?????
??
02) _MFC_VER
??? MFC版本宏.
???????
?????? Version??????????????????????? _MFC_VER value
??? --------------????????????????? -----------------
??????? 4.21???????????????????????????? 0x0421
??????? 6.0????????????????????????????? 0x0600
??????? 7.0????????????????????????????? 0x0700


03) __TIME__
??? 編譯當前源文件的時間,格式為 "hh:mm:ss" 樣式的字符串.
???

04) __DATE__
???? 編譯當前源文件的日期,格式為 "Mmm dd yyyy" 樣式的字符串.
????
?????????
05) __FILE__
??? 編譯的當前源文件名.???
???
???
?
?
???
3.實例解說
?
01) 根據_MFC_VER值判斷當前的編譯環境.
??? #if _MSC_VER >= 1400
?????? // this is Visual C++ 2005
??? #elif _MSC_VER >= 1310
?????? // this is Visual c++ .NET 2003
??? #elif _MSC_VER > 1300
?????? // this is Visual C++ .NET 2002
??? #endif
?
???
02) #else if 和 #elif 的細微差別
??? #if _MSC_VER < 1202
????? //EVC 4.0 complier is cross 1200 - 1202?
??? #else if _MSC_VER >= 1400
????? //Visual C++ 2005 complier is 1400
??? #else
????? //Visual C++ 2005 complier is 1400
??? #endif
???
??? 這段預編譯代碼在Evc4.0和visual studio 2005中編譯會出錯,提示錯誤為"unexpected #else".此時只要將"#else if"置換成"#elif"即可:
???
??? #if _MSC_VER < 1202
????? //EVC 4.0 complier is cross 1200 - 1202?
??? #elif _MSC_VER >= 1400
????? //Visual C++ 2005 complier is 1400
??? #else
????? //Visual C++ 2005 complier is 1400
??? #endif
???
??? 上面代碼可以順利編譯通過.
???

03) 包含上級目錄的某個頭文件
??? 如果當前文件需要包含上級目錄的某個頭文件,可采用"..//"形式,比如:
??? #include "..//Configure.h"
???
??? 甚至還可以層層遞推,定位于上上級目錄:
??? #include "..//..//Configure.h"
???
???
04) 包含當前目錄的某個文件夾下的頭文件
??? 如果當前文件需要包含當前目錄下的某個文件夾中的某個頭文件,可采用".//"形式,比如:
??? #include ".//Include//Configure.h"
???
???
05) 判斷當前CPU類型
?#ifdef _X86_
??? //x86
?#endif

?#ifdef _MIPS_
??? //Mips
?#endif

?#ifdef _ARM_
??? //Arm
?#endif
?
?
06)代碼中手動添加lib庫
? #pragma comment (lib,"..//Engine//Engine.lib")?

轉載于:https://www.cnblogs.com/wodeyitian/archive/2007/12/16/2460469.html

總結

以上是生活随笔為你收集整理的预编译指令与相关宏小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。