精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C語言邊角料5:一個(gè)跨平臺(tái)的頭文件

開發(fā) 后端
這篇短文分享一個(gè)頭文件,利用這個(gè)頭文件,再加上幾個(gè)編譯期間傳遞的宏,就可以完美的處理剛才所說的各種需求。

[[390476]]

一、前言

我們平常在寫代碼的時(shí)候,特別是在制造輪子的時(shí)候(為別人提供庫文件),會(huì)遇到各種不同的需求場(chǎng)景:

  1. 有些人需要在 Linux 系統(tǒng)下使用,有些人需要在 Windows 系統(tǒng)下使用;
  2. 有些人使用 C 語言開發(fā),有些人使用 C++ 來開發(fā);
  3. 有些人使用動(dòng)態(tài)庫,有些人使用靜態(tài)庫;

特別是在 Windows 系統(tǒng)中,庫文件中導(dǎo)出的函數(shù)需要使用 _declspec(dllexport) 來聲明函數(shù),而使用者在導(dǎo)入的時(shí)候,需要使用 _declspec(dllimport) 來聲明函數(shù),甚是麻煩!

這篇短文分享一個(gè)頭文件,利用這個(gè)頭文件,再加上幾個(gè)編譯期間傳遞的宏,就可以完美的處理剛才所說的各種需求。

二、頭文件

先直接上代碼,可以先試著分析一下,后面我們?cè)僦鹨环治霾煌氖褂脠?chǎng)景。

這個(gè)頭文件的主要目的,就是定義一個(gè)宏:MY_API,然后把這個(gè)宏添加在庫文件中每一個(gè)需要導(dǎo)出的函數(shù)或者類的聲明中即可。例如:

  1. void MY_API do_work(); 

下面是頭文件:

  1. _Pragma("once"
  2.  
  3. #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) 
  4.     #define MY_WIN32 
  5. #elif defined(linux) || defined(__linux) || defined(__linux__) 
  6.     #define MY_LINUX 
  7. #endif 
  8.  
  9. #if defined(MY_WIN32) 
  10.     #ifdef MY_API_STATIC 
  11.       #ifdef __cplusplus 
  12.          #define MY_API extern "C" 
  13.       #else 
  14.          #define MY_API 
  15.       #endif 
  16.    #else 
  17.       #ifdef MY_API_EXPORTS 
  18.          #ifdef __cplusplus 
  19.             #define MY_API extern "C" __declspec(dllexport) 
  20.          #else 
  21.             #define MY_API __declspec(dllexport) 
  22.          #endif 
  23.       #else 
  24.          #ifdef __cplusplus 
  25.             #define MY_API extern "C" __declspec(dllimport) 
  26.          #else 
  27.             #define MY_API __declspec(dllimport) 
  28.          #endif 
  29.       #endif 
  30.    #endif 
  31. #elif defined(MY_LINUX) 
  32.     #ifdef __cplusplus 
  33.        #define MY_API extern "C" 
  34.     #else 
  35.        #define MY_API 
  36.     #endif 
  37. #endif 

三、預(yù)定義的宏

假設(shè)需要寫一個(gè)庫文件,提供給別人使用。定義了上面這個(gè)頭文件之后,其他的文件中都要include 這個(gè)頭文件。

1. 平臺(tái)宏定義

不同的平臺(tái)預(yù)定義了相應(yīng)的宏定義,例如:

  • Windows 平臺(tái):WIN32, _WIN32, WIN32;
  • Linux 平臺(tái):linux, __linux, linux;

在一個(gè)確定的平臺(tái)上,這些宏不一定全部定義,很可能只有其中的某一個(gè)宏是被定義的。

為了統(tǒng)一性,我們?cè)陬^文件的剛開始部分,把這些可能的宏統(tǒng)一起來,定義我們出我們自己的平臺(tái)宏定義:MY_WIN32 或者是 MY_LINUX,后面需要區(qū)分不同的平臺(tái)時(shí),就用這個(gè)自己定義的平臺(tái)宏。

當(dāng)然,還可以繼續(xù)擴(kuò)充出其他平臺(tái),例如:MY_MAC, MY_ARM 等等。

2. 編譯器宏定義

如果在寫庫代碼的時(shí)候,使用的是 C++,而使用者使用的是 C 語言,那么就需要對(duì)庫函數(shù)進(jìn)行extern “C” 聲明,讓編譯器不要對(duì)函數(shù)的名稱進(jìn)行改寫。

編譯器 g++ 預(yù)定義了宏 __cplusplus,因此,在頭文件中,就利用了這個(gè)宏,在 MY_API 中添加 extern "C" 聲明。

四、Windows 平臺(tái)場(chǎng)景分析

1. 編譯生成庫文件

(1) 生成靜態(tài)庫

在靜態(tài)庫中,不需要 __declspec(dllexport/dllimport) 的聲明,因此只需要區(qū)分編譯器即可(gcc or g++),在編譯選項(xiàng)中定義宏 MY_API_STATIC,即可得到最終的 MY_API 為:

  • gcc 編譯器:#define MY_API
  • g++ 編譯器:#define MY_API extern "C"

(2) 生成動(dòng)態(tài)庫

在編譯選項(xiàng)中,定義宏 MY_API_EXPORTS,這樣最終得到的 MY_API 就會(huì)變成:

  • gcc 編譯器:#define MY_API __declspec(dllexport)
  • g++ 編譯器:#define MY_API extern "C" __declspec(dllexport)

2. 使用庫

在使用庫的應(yīng)用程序中,也需要在代碼中 include 這個(gè)頭文件,然后加上編譯選項(xiàng)中定義的各種宏,來生成對(duì)應(yīng)的 MY_API 宏定義。

(1) 使用靜態(tài)庫

需要在編譯選項(xiàng)中定義 MY_API_STATIC,即可得到最終的 MY_API 為:

  • gcc 編譯器:#define MY_API
  • g++ 編譯器:#define MY_API extern "C"

(2) 使用動(dòng)態(tài)庫

在編譯選項(xiàng)中不需要任何宏定義,即可得到最終的 MY_API 為:

  • gcc 編譯器:#define MY_API extern "C" __declspec(dllimport)
  • g++ 編譯器:#define MY_API __declspec(dllimport)

這樣就相當(dāng)于聲明導(dǎo)入庫函數(shù)了。

 

五、Linux 平臺(tái)場(chǎng)景分析

Linux 平臺(tái)下就簡(jiǎn)單多了,只需要注意編譯器的問題,而沒有導(dǎo)出和導(dǎo)入之分。

 

責(zé)任編輯:姜華 來源: IOT物聯(lián)網(wǎng)小鎮(zhèn)
相關(guān)推薦

2021-03-26 11:29:58

C語言PragmaAPI

2021-03-22 11:27:06

C語言Peterson(皮特互斥鎖

2021-03-24 08:02:58

C語言

2021-05-11 11:31:52

C語言類型指針

2010-01-19 15:18:12

C++語言

2014-03-12 10:00:26

移動(dòng)開發(fā)跨平臺(tái)

2012-06-27 17:30:03

VisionMobil跨平臺(tái)開發(fā)工具

2015-03-17 09:59:41

跨平臺(tái)

2021-02-01 17:29:19

FlutterHello World開發(fā)

2021-06-23 06:12:38

Subtitld編輯器開源

2025-09-22 04:00:00

2022-11-21 07:57:56

cmake工程模板

2021-11-15 14:42:20

Motrix下載管理器開源

2015-06-30 08:37:12

ASP.NET.NET

2023-12-07 12:59:46

C語言循環(huán)隊(duì)列代碼

2021-01-14 08:55:20

C語言編程

2018-11-09 09:40:52

2013-05-27 09:47:33

Java開發(fā)Java跨平臺(tái)

2010-01-25 17:55:38

C++頭文件

2023-02-26 23:49:17

Go語言監(jiān)聽?zhēng)?/a>
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

一区二区三区日韩视频| 国产精品美女www| 91玉足脚交白嫩脚丫| 性欧美xxx69hd高清| 国产三区在线成人av| 91精品国产自产在线观看永久| 26uuu成人网| 欧美偷窥清纯综合图区| 欧美色网站导航| 久久www视频| 黄色免费在线播放| 国产精品1区2区3区| 97视频在线看| 免费三级在线观看| 亚洲动漫精品| 日韩欧美国产一二三区| 人妻少妇被粗大爽9797pw| 婷婷激情在线| 久久亚洲一区二区三区四区| 成人国产精品av| 欧美三级韩国三级日本三斤在线观看| 日本一二区不卡| 亚洲国产精品字幕| 九九热视频免费| 日本一区免费网站| 精品免费在线视频| 日本一区二区三区四区五区六区| 免费成人av电影| 粉嫩av一区二区三区| 国产中文字幕91| 老熟妇仑乱一区二区av| 伊人久久综合| 久久综合88中文色鬼| 亚洲第一综合网| 精品三级av| 日韩精品一区二区三区视频| 色www免费视频| gay欧美网站| 亚洲国产精品一区二区www在线| 天堂精品视频| 国产二区视频在线观看| 99re这里只有精品视频首页| 国产成人精品日本亚洲11| 国产一区二区在线播放视频| 日日摸夜夜添夜夜添亚洲女人| 久久久免费观看| 青春草免费视频| 一级欧洲+日本+国产| 精品久久国产精品| 日本爱爱小视频| 欧美3p在线观看| 中日韩美女免费视频网站在线观看 | re久久精品视频| 亚洲精品理论电影| 国产chinese中国hdxxxx| 日本免费一区二区视频| 日韩丝袜美女视频| 国偷自产av一区二区三区麻豆| 日韩久久一区| 欧美高清视频一二三区| 久久人人爽av| 免费视频观看成人| 欧美日韩国产色站一区二区三区| 一道本视频在线观看| 国产亚洲精彩久久| 欧美精品一级二级三级| 亚洲制服中文字幕| 亚洲经典视频| 亚洲国产一区自拍| 草草影院第一页| 精品国产精品| 日韩在线观看网址| 国产一区二区三区在线视频观看| 亚洲一区二区三区| 国内成人精品一区| 丁香六月婷婷综合| 奇米四色…亚洲| 91性高湖久久久久久久久_久久99| 精品久久久久中文慕人妻| 东方aⅴ免费观看久久av| 国产欧美日韩亚洲| 国产福利电影在线| 亚洲精品一二三| 日韩av新片网| 偷拍中文亚洲欧美动漫| 欧美精选在线播放| 成熟妇人a片免费看网站| 亚洲欧美tv| 日韩在线www| 香蕉视频一区二区| 日韩高清不卡一区二区| 亚洲xxx视频| 欧洲毛片在线| 1区2区3区精品视频| av免费观看国产| 91成人抖音| 日韩欧美在线影院| 中日韩精品一区二区三区| 91一区在线| 午夜精品福利在线观看| 中文字幕日产av| 成人午夜免费电影| 日韩在线国产| 国产美女高潮在线| 91精品国产免费久久综合| 亚洲av网址在线| 天天色综合色| 日本成熟性欧美| a级片免费观看| 久久综合久久综合亚洲| 黄色一级视频播放| 亚洲一区二区三区四区| 精品久久99ma| 最新黄色av网址| 亚洲影院在线| 91丨九色丨国产| 丁香婷婷在线| 婷婷丁香激情综合| 色偷偷中文字幕| 日韩精品久久| 日本国产高清不卡| 刘亦菲毛片一区二区三区| 国产精品蜜臀av| 日韩a在线播放| 亚洲2区在线| 精品国产一区二区在线| 日本免费在线观看视频| 波多野结衣中文字幕一区二区三区| 亚洲人久久久| 欧洲一级精品| 日韩av一区二区在线| 欧美日韩国产精品一区二区三区| 欧美aaaaaa午夜精品| 久中文字幕一区| 国产丝袜视频在线播放| 日韩一级免费一区| 午夜国产福利视频| 免费在线看一区| 日韩女优中文字幕| 亚洲国产福利| 亚洲精品一区二区三区不| 日本学生初尝黑人巨免费视频| 国产精品88888| 国产又粗又大又爽的视频| 亚洲一区二区av| 俺也去精品视频在线观看| 亚洲一区二区视频在线播放| 欧美激情自拍偷拍| 久久婷五月综合| 欧美成人自拍| 成人av电影天堂| 日本视频在线| 7878成人国产在线观看| 男人在线观看视频| 国内精品在线播放| 成人在线免费观看网址| 日本免费一区二区视频| 欧美疯狂性受xxxxx另类| 亚洲精品国产片| 性做久久久久久| 午夜剧场免费看| 亚洲欧美大片| 色女人综合av| 97久久精品一区二区三区的观看方式| 久久亚洲国产精品成人av秋霞| 国产一区二区女内射| 亚洲精品高清在线观看| 四虎成人免费视频| 99成人在线| 日韩国产欧美一区| 亚洲欧美在线综合| 欧美大片免费观看在线观看网站推荐| 亚洲精品一区二区三区四区| 亚洲超丰满肉感bbw| 精品无码一区二区三区| 奇米888四色在线精品| 穿情趣内衣被c到高潮视频| 大伊香蕉精品在线品播放| 2021国产精品视频| av在线二区| 日韩欧美亚洲国产另类| 日韩成人免费观看| 亚洲国产高清在线| 又色又爽又黄18网站| 亚洲精品国产日韩| 日韩欧美亚洲日产国| 精品国产亚洲一区二区三区大结局 | 狠狠躁18三区二区一区| 久久久精品成人| 国产成人在线视频网址| 国产91对白刺激露脸在线观看| 欧美精选视频在线观看| 97神马电影| 国产一区二区三区影视| 色综合色综合网色综合| 国产三级在线看| 亚洲а∨天堂久久精品喷水| 无码人妻一区二区三区线| 1区2区3区精品视频| 亚洲av无码成人精品国产| 精品一区二区精品| 国产亚洲精品网站| 自拍视频亚洲| 日韩欧美一区二区三区四区 | 欧美日韩视频在线第一区| 国产性生活网站| 国产精品系列在线| 在线观看国产免费视频| 精品一区二区三区影院在线午夜| 黄色国产一级视频| 亚洲成人一区| 色视频一区二区三区| а√中文在线天堂精品| 国产免费一区二区三区香蕉精| 超碰资源在线| 欧美日韩国产二区| 国产激情视频在线| 最近2019中文字幕大全第二页| 亚洲精品一区二区三区区别| 欧美精品自拍偷拍动漫精品| 伊人国产在线观看| 亚洲色图欧洲色图| 一级二级黄色片| 久久人人爽爽爽人久久久| 国产a√精品区二区三区四区| 久久99精品一区二区三区三区| 久草青青在线观看| 99riav1国产精品视频| 欧美中文字幕在线观看视频| 久久综合成人| 色播五月综合| 欧美人与拘性视交免费看| 久久精品magnetxturnbtih| 麻豆精品国产| 91久热免费在线视频| 欧美特黄色片| 国产精品视频免费在线观看| 欧美人与性动交xxⅹxx| 57pao国产成人免费| 黄视频免费在线看| 国产91|九色| 性欧美又大又长又硬| 97在线免费视频| 美女高潮在线观看| 2021久久精品国产99国产精品| 51av在线| 97在线视频精品| 午夜伦理福利在线| 国产91色在线|免| 性高爱久久久久久久久| 国产成人精品一区二区| 亚洲日本在线观看视频| 国产精品久久久久久久美男 | 国产香蕉在线| 亚洲网址你懂得| av在线播放网| 日韩在线观看免费网站| 黄在线免费看| 欧美日韩福利电影| 8x8ⅹ拨牐拨牐拨牐在线观看| 午夜精品久久久久久久99热 | 男人天堂av网| 亚洲高清久久久久久| 香蕉视频国产在线| 亚洲社区在线观看| 在线免费看av| 欧美美最猛性xxxxxx| 狂野欧美激情性xxxx欧美| 国语自产精品视频在线看一大j8 | 国产精品h在线观看| 69堂精品视频在线播放| 国产在线一区二区三区| 亚洲视频三区| 精品综合久久久| 欧美丝袜丝交足nylons172| 在线观看日韩羞羞视频| 欧美日韩p片| 亚洲国产精品久久久久爰色欲| 日韩黄色一级片| 一区二区免费av| 盗摄精品av一区二区三区| free性中国hd国语露脸| 国产精品久久久久久一区二区三区 | 亚洲国产高清在线| 毛片aaaaa| 色综合久久综合中文综合网| 亚洲天堂网在线观看视频| 日韩三级中文字幕| 美国一级片在线免费观看视频 | 在线精品亚洲| 别急慢慢来1978如如2| 狠狠久久亚洲欧美| 中文字幕一区二区久久人妻网站| 中文字幕精品三区| 久久精品久久国产| 欧美在线你懂的| 丰满肉肉bbwwbbww| 三级精品视频久久久久| av手机在线观看| 国产中文日韩欧美| 久久爱www成人| www国产免费| 人禽交欧美网站| 一级欧美一级日韩片| 亚洲国产成人午夜在线一区| 久久精品无码人妻| 欧美疯狂做受xxxx富婆| 青青草娱乐在线| 欧美激情伊人电影| 四虎国产精品免费久久5151| 久久国产一区| 好吊日精品视频| 九九热精品在线播放| 91一区二区在线| 久久久久久国产精品免费播放| 欧美中文字幕一区二区三区 | 国产亚洲精品综合一区91| 久操av在线| 91在线观看免费高清完整版在线观看| 米奇777超碰欧美日韩亚洲| 野外做受又硬又粗又大视频√| 久久精品国产第一区二区三区| 国产熟妇搡bbbb搡bbbb| 亚洲综合色婷婷| 91亚洲国产成人久久精品麻豆 | 亚洲一级中文字幕| 午夜精品福利一区二区蜜股av| 国产情侣自拍小视频| 搡老女人一区二区三区视频tv | 成人激情春色网| 激情综合网五月| 国产日韩一区二区在线观看| 99精品国产91久久久久久| 国产性一乱一性一伧一色| 日韩三级免费观看| 91蜜桃在线视频| 91在线视频免费| 天堂美国久久| 日韩欧美理论片| 亚洲视频每日更新| 国产精品国产三级国产普通话对白| 一区二区三区四区视频| 欧美日韩视频免费观看| 欧美精品免费观看二区| 男女精品网站| 谁有免费的黄色网址| 日本精品免费观看高清观看| 国模精品一区二区| 国产精欧美一区二区三区| 精品99久久| 亚洲精品一二三四五区| 国产欧美日韩综合精品一区二区| 国产精品va无码一区二区三区| 亚洲欧美成人网| 婷婷综合六月| 无码免费一区二区三区免费播放 | 国产mv久久久| av在线不卡顿| 性猛交ⅹ×××乱大交| 国产精品国产三级国产普通话蜜臀| 97超碰国产在线| 欧美激情免费视频| 另类ts人妖一区二区三区| wwwxxx黄色片| 国产精品久久久久久妇女6080| 国产精品久久久久久免费免熟| 久久国产加勒比精品无码| 99精品国产一区二区三区2021| 欧日韩免费视频| 国产午夜亚洲精品午夜鲁丝片 | 免费观看日韩电影| 多男操一女视频| 精品99999| 欧美舌奴丨vk视频| 亚洲日本无吗高清不卡| 国产精品亚洲第一区在线暖暖韩国| 国产精品成人av久久| 亚洲美女性视频| 精品自拍视频| 美女黄色免费看| 久久久www成人免费毛片麻豆 | 亚洲一二三在线观看| 亚洲电影免费观看高清完整版在线观看 | 91亚洲精品在看在线观看高清| 高清无码一区二区在线观看吞精| 91小视频在线| 亚洲手机在线观看| 国语自产精品视频在线看一大j8| 欧美呦呦网站| 日韩大尺度视频| 91国产免费看| 欧美人与禽猛交乱配| 日本高清不卡三区| 国产成人av电影| 波多野结衣电车痴汉| 欧美巨猛xxxx猛交黑人97人| 狠狠色丁香婷婷综合影院| 性生活在线视频| 在线观看亚洲精品视频| 牛牛电影国产一区二区|