色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++20 modules基礎知識入門

CPP開發者 ? 來源:程序喵大人 ? 2023-06-15 11:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以前一直有了解C++20的新特性,但是因為編譯器對此支持的比較少,所以很少實踐。

近期才知道MSVC已經全面支持了C++20的新特性,所以打算全部實踐一下,最近在MSVC上跑通了modules,這里分享一下modules的使用方法(注意,以下Case僅適用于MSVC上,估計其它編譯器的使用方式與此有些差異)。

那modules是什么?它有什么作用?

以前C++中想使用外部某個函數或變量需要使用#include來引用頭文件,但include這種做法其實就是把文件的內容原封不動的復制過來,如果一個復雜的頭文件被好多個源文件include,那整個項目的編譯速度也會降低,而且很多時候也會把一些復雜的宏定義引入進來,造成宏污染等等。

而modules就是為了解決這種問題而引入的,它是一種組件思想,一個module編譯一次后,它的結果會被保存在二進制文件中,一個module可以選擇把什么內容暴露給外面使用,剩下的只有內部可見。其它想使用此module的模塊直接使用即可,無需再次編譯,可以重用。最主要的是,使用modules的項目,編譯速度比include的方式快的多,記得之前看過一組測試數據(好像是哪個會議上C++之父貼出來的),modules項目的編譯速度是include的25倍左右。

如果你的項目中已經使用了C++20,真的可以考慮把include方式轉換為modules方式。

在MSVC中怎么使用modules?

我的編譯器是VS2019,經我測試,想要VS中跑通modules需要一些前置條件,比如需要安裝modules相關的環境包,可以在VS installer中安裝:

9a803b54-0b2d-11ee-962d-dac502259ad0.png

其次在自己的項目中,需要把C++標準改為C++20或者C++latest:

9a84437a-0b2d-11ee-962d-dac502259ad0.png

還有一點,需要在VS中啟用modules功能:

9aab523a-0b2d-11ee-962d-dac502259ad0.png

這三項都配置后,你應該就可以成功使用modules功能了。

看下我的測試用例:

9ac471ac-0b2d-11ee-962d-dac502259ad0.png

Example.ixx可以理解為是頭文件,它定義了可以對外暴露的接口,后綴名是.ixx,開頭以export module name表示該module的名字是name。

前面加了export的修飾的函數或類表示可以對外暴露,外部可以使用。而module :private; 后面的表示內部的東西,只有內部可見和使用,外部不能使用,比如Example.ixx中的PrivateFunc,如果外部使用,編譯時就會報錯。

模塊接口文件的后綴名一般是.ixx,實現接口的文件后綴名和原來的C++一樣,還是.cpp。

看我的Example.cpp,第一行中的module Example,表示在module Example空間,自然而然可以訪問到Example module中的內容,這里你也可以看的到,里面定義了ixx中聲明的接口。

那import std.core; 是什么作用?

import表示導入xxx模塊,import后就可以使用對應模塊的功能,比如想要使用std::cout,那就需要import std.core。

那我們以前使用的那些標準庫的函數,都對應什么module?

在MSVC中是這樣:

std.regex提供頭文件的內容

std.filesystem提供頭文件的內容

std.memory提供頭文件的內容

std.threading提供了頭文件的內容

除此之外的功能都由std.core提供。

要使用某些模塊,直接添加import聲明即可:

import std.filesystem;
import std.core;

再看下我的main函數所在的測試文件:

9ace9178-0b2d-11ee-962d-dac502259ad0.png

想要使用Example module中export出的功能,直接import Example即可,剩下的使用方式和以前類似。

介紹到這里,大家就可以在VS中寫一個modules的Demo了。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Modules
    +關注

    關注

    0

    文章

    10

    瀏覽量

    8125
  • C++語言
    +關注

    關注

    0

    文章

    147

    瀏覽量

    7307
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C++20新特性解析

    C++之父都說過,C++20C++語言的一次重大變革,引入了大量的新特性。
    發表于 10-08 09:07 ?2400次閱讀

    模擬電路入門基礎知識

    模擬電路入門基礎知識
    發表于 06-06 13:57

    PLC入門必看基礎知識

    PLC基礎知識(PLC入門必看)與C語言有什么關系_plc可以用c語言編程嗎_plc的C語言編程詳解
    發表于 09-09 08:39

    HIFI耳機基礎知識入門

    HIFI耳機基礎知識入門 一、耳機是如何分類的? 1、按換能原理(Transducer)分
    發表于 02-02 11:48 ?3216次閱讀

    ADC入門_基礎知識

    ADC入門_基礎知識對初學者有很好的幫助。希望大家會喜歡。
    發表于 03-11 17:41 ?45次下載

    電感資料--電感基礎知識入門

    電子專業單片機相關知識學習教材資料——電感資料--電感基礎知識入門
    發表于 10-10 14:17 ?0次下載

    初學者AVR軟件入門基礎知識(2)

    初學者AVR軟件入門基礎知識(2)
    的頭像 發表于 07-04 09:50 ?2931次閱讀

    初學者AVR軟件入門基礎知識(3)

    初學者AVR軟件入門基礎知識(3)
    的頭像 發表于 07-04 09:51 ?2885次閱讀

    什么是DCS系統?DCS系統基礎知識入門

    什么是DCS系統?DCS系統基礎知識入門
    的頭像 發表于 12-02 11:14 ?4.8w次閱讀
    什么是DCS系統?DCS系統<b class='flag-5'>基礎知識</b><b class='flag-5'>入門</b>

    適合C語言小白看的基礎知識梳理總結

    C語言是當代人學習及生活中的必備基礎知識,應用十分廣泛,下面為大家帶來C語言基礎知識梳理總結,C語言零基礎
    的頭像 發表于 01-04 11:07 ?5069次閱讀

    FPGA的入門基礎知識詳細說明

    本文檔的主要內容詳細介紹的是FPGA的入門基礎知識詳細說明。
    的頭像 發表于 12-20 10:13 ?1w次閱讀
    FPGA的<b class='flag-5'>入門</b><b class='flag-5'>基礎知識</b>詳細說明

    Arduino入門必備基礎知識(基礎認證考前總結)

    Arduino入門必備基礎知識(基礎認證考前總結)
    發表于 11-15 20:51 ?16次下載
    Arduino<b class='flag-5'>入門</b>必備<b class='flag-5'>基礎知識</b>(基礎認證考前總結)

    C++基礎知識

    C++基礎知識
    的頭像 發表于 01-12 11:00 ?1671次閱讀
    <b class='flag-5'>C</b>++<b class='flag-5'>基礎知識</b>

    現代C++20實戰手冊

    追其根源,C++ 為何如此受歡迎,除了它本身出色的性能,作為一種高級面向對象語言,適用領域極其廣泛,小到嵌入式,大到分布式服務器,到處可以見到 C++ 的身影;另一個很重要的原因就是它“最近”不斷發布具有有趣功能的新語言標準,也就是 C
    的頭像 發表于 01-17 09:55 ?4208次閱讀

    C++20 modules入門

    以前一直有了解C++20的新特性,但是因為編譯器對此支持的比較少,所以很少實踐。
    的頭像 發表于 05-29 15:03 ?1374次閱讀
    <b class='flag-5'>C++20</b> <b class='flag-5'>modules</b><b class='flag-5'>入門</b>
    主站蜘蛛池模板: 国产品无码一区二区三区在线 | 九九精品视频一区二区三区 | 蝴蝶中文综合娱乐网2 | 在线中文高清资源免费观看 | 欧美在线视频一区 | 国产成人国产在线观看入口 | 国产精品久久久久久久久齐齐 | 夜色女人香| 91九色视频在线观看 | 美女夫妻内射潮视频 | 久久aa毛片免费播放嗯啊 | 国产成人a视频在线观看 | voyeurhit农村夫妻偷拍 | 亚洲 欧美 国产 伦 综合 | 狠狠干女人 | 黄色直接观看 | 免费精品国偷自产在线在线 | 国产XXXXXX农村野外 | 人人爽久久久噜噜噜丁香AV | 色cccwww | Chineseman瘦老头77 | 伊人久久大香线蕉综合高清 | MD传媒MD0021在线观看 | 97国产精品视频在线观看 | 亚洲一区免费观看 | 鸭子玩富婆流白浆视频 | 国产精品玖玖玖影院 | 黄图gif揉胸吸奶 | YELLOW视频在线观看免费版高清 | www.日本 高清.com | 欧美黄色精品 | 中文字幕亚洲无线码在线 | 全黄H全肉细节文短篇 | 国精品产露脸偷拍视频 | 9LPORM原创自拍达人 | 蜜桃传媒星空传媒在线播放 | 狂躁美女BBBBBB视频 | 九色PORNY丨视频入口 | 日韩精品特黄毛片免费看 | 久久全国免费久久青青小草 | 成年视频国产免费观看 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品