最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?CLR學(xué)習(xí)?C++使用namespace實(shí)例詳解

 更新時(shí)間:2022年09月02日 14:11:14   作者:一線碼農(nóng)  
這篇文章主要為大家介紹了C#?CLR學(xué)習(xí)?C++使用namespace實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一:背景

相信大家在分析 dump 時(shí),經(jīng)常會(huì)看到 WKS 和 SRV 這樣的字眼,如下代碼所示:

00007ffa`778a07b8 coreclr!WKS::gc_heap::segment_standby_list = 0x00000000`00000000
00007ffa`778a3870 coreclr!WKS::qpf = 0x989680
00007ffa`7789da30 coreclr!SVR::heap_select::numa_node_to_heap_map = unsigned short [1028]
00007ffa`7789f2d0 coreclr!SVR::gc_heap::should_expand_in_full_gc = 0n0

其實(shí)這就是命名空間,即 coreclr 在編譯源碼的時(shí)候,為 WKS 和 SVR 各編譯了一份,不知道這么做的初衷是什么,這里就不管了,接下來(lái)看下 coreclr 中大概長(zhǎng)啥樣子。

namespace WKS {
    #include "gcimpl.h"
    #include "gc.cpp"
}
namespace SVR {
    #include "gcimpl.h"
    #include "gc.cpp"
}

二:聊一聊 namespace

其實(shí)和 C# 的 namespace 本質(zhì)差不多,都是起到隔離的作用,而且和 using 的配合使用和 C# 也是如出一轍,太有意思了。

1. 簡(jiǎn)單的隔離

在 C++ 中默認(rèn)只有一個(gè) namespace,所以相同的變量會(huì)出現(xiàn)沖突,解決辦法就是用 namespace 隔離,參考如下代碼:

namespace WKS
{
	int a = 10;
	int b = 11;
}
namespace SRV {
	int a = 100;
	int b = 101;
}
int main()
{
	printf("WKS::a= %d \n", WKS::a);
	printf("SRV::a= %d \n", SRV::a);
}

當(dāng)然還可以嵌套使用,比如改成這樣。

namespace WKS
{
	namespace V1 {
		int a = 10;
		int b = 11;
	}
}
int main()
{
	printf("WKS::a= %d \n", WKS::V1::a);
}

接下來(lái)看下匯編代碼:

哈哈,看到上面的 WKS::V1::a 感覺(jué)是不是挺舒服的,也特能理解目前的 coreclr!WKS::xxx 了, 不過(guò)這里有一個(gè)麻煩的地方,就是每次用 a 的時(shí)候都要輸入很長(zhǎng)的前綴,那有沒(méi)有簡(jiǎn)化的方法呢? 當(dāng)然有啦。

2. 使用 using 導(dǎo)入

接下來(lái)我們用 using 直接在 main 函數(shù)中定義字段,后續(xù)就不需要再寫(xiě)長(zhǎng)長(zhǎng)的前綴引用了,參考代碼如下:

namespace WKS
{
	namespace V1 {
		int a = 10;
		int b = 11;
	}
}
int main()
{
	using WKS::V1::a;
	printf("WKS::V1::a1= %d \n", a);
}

3. 使用 using 定義別名

定義別名這功能特別好,個(gè)人感覺(jué)已經(jīng)完全替代以前的 typedef 功能,比如下面的代碼是完全一樣的。

int main()
{
	typedef const char* PCHAR;
	using PCHAR2 = const char*;
	PCHAR ptr1 = "hello world1";
	PCHAR2 ptr2 = "hello world2";
}

如果還不信的話,可以看下它們各自生成的匯編代碼。

	PCHAR ptr1 = "hello world1";
00007FF79856183B  lea         rax,[string "hello world1" (07FF798569C10h)]  
00007FF798561842  mov         qword ptr [ptr1],rax  
	PCHAR2 ptr2 = "hello world2";
00007FF798561846  lea         rax,[string "hello world2" (07FF798569CE8h)]  
00007FF79856184D  mov         qword ptr [ptr2],rax  

4. 使用 using namespace 導(dǎo)入

這個(gè)是最普遍的,我們對(duì)系統(tǒng)庫(kù)的調(diào)用,無(wú)一不是用 using namespace 方式的,比如下面的代碼。

using namespace std;
int main()
{
	string str = "hello world";
}

接下來(lái)我們把 V1 導(dǎo)入到 main 方法中,這樣就可以自由自在的使用 WKS::V1 中的內(nèi)容了,參考如下代碼:

namespace WKS
{
	namespace V1 {
		int a = 10;
		int b = 11;
	}
}
int main()
{
	using namespace WKS::V1;
	printf("a=%d, b=%d", a, b);
}

好了,這就是對(duì) namespace 的一點(diǎn)理解,本篇就說(shuō)這么多吧,希望對(duì)你有幫助。

以上就是C# CLR學(xué)習(xí) C++使用namespace實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于C# CLR C++使用namespace的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解如何使用openssl創(chuàng)建自簽名證書(shū)

    詳解如何使用openssl創(chuàng)建自簽名證書(shū)

    這篇文章主要為大家介紹了詳解如何使用openssl創(chuàng)建自簽名證書(shū)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 基于C語(yǔ)言掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)

    基于C語(yǔ)言掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)

    大家好,本篇文章主要講的是基于C語(yǔ)言掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++使用jsoncpp解析json的方法示例

    C++使用jsoncpp解析json的方法示例

    這篇文章主要介紹了C++使用jsoncpp解析json的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 淺析C++元組tuple類型

    淺析C++元組tuple類型

    元組tuple是C++的一個(gè)模板,不同tuple類型的成員類型也不相同,但是一個(gè)tuple可以有任意數(shù)量的成員,今天通過(guò)本文給大家介紹C++元組tuple類型,感興趣的朋友一起看看吧
    2022-06-06
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之簡(jiǎn)易計(jì)算器

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之簡(jiǎn)易計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之簡(jiǎn)易計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 一文詳解Qt中的對(duì)象樹(shù)機(jī)制

    一文詳解Qt中的對(duì)象樹(shù)機(jī)制

    Qt提供了對(duì)象樹(shù)機(jī)制,能夠自動(dòng)、有效的組織和管理繼承自QObject的Qt對(duì)象。這篇文章將通過(guò)一些示例為大家介紹一下Qt中對(duì)象樹(shù)機(jī)制的使用,需要的可以參考一下
    2023-03-03
  • C語(yǔ)言實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)實(shí)戰(zhàn)教學(xué)

    C語(yǔ)言實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)實(shí)戰(zhàn)教學(xué)

    在本篇文章里小編給大家分享了關(guān)于C語(yǔ)言實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)實(shí)戰(zhàn)教學(xué)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2019-01-01
  • C語(yǔ)言實(shí)現(xiàn)萬(wàn)年歷小功能

    C語(yǔ)言實(shí)現(xiàn)萬(wàn)年歷小功能

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)萬(wàn)年歷小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++項(xiàng)目基于HuffmanTree實(shí)現(xiàn)文件的壓縮與解壓縮功能

    C++項(xiàng)目基于HuffmanTree實(shí)現(xiàn)文件的壓縮與解壓縮功能

    這篇文章主要介紹了C++項(xiàng)目基于HuffmanTree實(shí)現(xiàn)文件的壓縮與解壓縮功能,本文給大家提到文件壓縮的概念介紹及壓縮方法,通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • C++或Go求矩陣?yán)锏膷u嶼的數(shù)量詳解

    C++或Go求矩陣?yán)锏膷u嶼的數(shù)量詳解

    這篇文章主要介紹了C++和go實(shí)現(xiàn)LeetCode(200.島嶼的數(shù)量),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

宜都市| 得荣县| 如东县| 沭阳县| 高邮市| 正安县| 合肥市| 仪陇县| 诸城市| 哈密市| 常州市| 大厂| 安阳县| 灵寿县| 南丰县| 大关县| 葫芦岛市| 麻城市| 彭山县| 台前县| 黄平县| 汽车| 丰镇市| 宁武县| 灵石县| 阿鲁科尔沁旗| 通江县| 惠水县| 鹤山市| 会宁县| 波密县| 抚宁县| 吉木萨尔县| 杭锦后旗| 来安县| 共和县| 芒康县| 万载县| 鄯善县| 铅山县| 安国市|