在c 中如何通過編譯器獲取auto物件的具體型別?

時間 2021-06-01 22:51:35

1樓:Sunchy321

在某些比較極端的情況下,沒有什麼辦法驗證某個表示式是不是某個型別。

例如,我現在也沒用想出什麼辦法確定""的型別(它是char const[1]的左值)。

typeid會decay,decltype得到的是引用。。

但是如果不考慮這些特殊情況,可以得到乙個比較簡單的解決方案:

#include

auto x = ...;

static_assert(std::is_same::value, "");

2樓:LzxHahaha

typeid 運算子

好吧我比較瞎沒注意,直接用typeid是沒法獲得const和reference資訊,要判斷是不是const的話可以用std::is_const,比如

const

intcval=0

;std

::cout

<

boolalpha

<

is_const

(cval

)>::

value

;reference同理,換成std::is_reference就好,所以判斷的話大概可以寫成這樣,我自己試了一下應該是沒問題的(逃,如果有錯請指出……

「std::is_」開頭的還有好多亂七八糟的東西,題主慢慢研究吧……template

_Tp>

std::

string

GetName

(_Tpt)

intmain()

編譯器內部是如何處理 C 語言 typedef 關鍵字的?

甄爍華 你知道貝塞斯達嗎?就是做輻射系列和上古卷軸的那個遊戲公司。他裡面專門有乙個招的職位就是C工程師。之前還嘗試過STM8標準下的C語言開發 英文直翻不知道這樣稱呼是否準確 做乙個能自動包裝的機器。這個project現在還在做。做下來的感覺就是在操控硬體 顯示全部 阿爾伯特 編譯器內部是如何處理這...

如何為VS2017配置C語言的編譯器?

vs2019 Visual Studio 2019 權威指南 C語言 軟體工程開發的方向 技巧要領 嗶哩嗶哩 乾杯 bilibili 不跟隨 你是想說用gcc編譯沒問題,用vs編譯出問題了吧,這是因為Windows和linux兩套編譯器對c標準支援的不一樣,你想要vs的編輯器想用gcc編譯,可以考慮...

C語言編譯器是如何實現指標 1這樣的乙個機制?

p的值被load到某個暫存器r,然後add r,4 就可以了。這裡4已經被編譯器用sizeof array item type 給換成立即數了。所以你說的什麼p 和 1,實際上沒什麼區別。如果有人要拿這個來說快慢,恕我直言,也許是因為他還不夠了解底層的cpu是如何執行指令的這乙個層面。 這個很簡單,...