2011-06-27 24 views
0

是否有一個函數會以某種形式(列表)返回(在編譯元程序期間)所有可用基元類型的列表? 感謝C++的基本類型列表

+3

只需閱讀語言標準,該標準規定了該語言必須支持的基本類型,或[請參閱此處](http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Basic_types)。 –

+0

@Kerrek SB:請注意,這不一定是詳盡的列表。這只是最低限度,編譯器完全可以自由添加'__int128'。 – MSalters

回答

1

錯誤的問題。

什麼是類型列表? std::list<T>?或數組?

如果是std :: list,那麼什麼是T? T =「std :: string」?

C++標準中描述了所有類型的列表。

bool 
signed/unsigned char 
signed/unsigned short int 
signed/unsigned int 
signed/unsigned long 
size_t 
wchar_t 
float 
double 
+9

你錯過了'長雙'和普通'char'。此外,'size_t'通常不是一個獨特的類型,而是一個typedef。 – MSalters

5

沒有 - 這樣的運行時內省是不常見的,也不可能也沒有用C有用++(你會做什麼用運行功能,讓你,你確實需要的類型名稱列表首先寫你的代碼?)。

由語言支持的原語類型包括:

bool 
(unsigned,signed) char 
wchar_t 
(unsigned) short 
(unsigned) int 
(unsigned) long 
[(unsigned) long long] 

float 
double 
[long double] 

個別編譯器支持更多,和許多類型的通常是可獲得的,而是由typedefing上述原始類型的裝置(即uint32_t等等)來實現。

有關完整列表,請查看語言規範。

+2

以上大部分也有'unsigned'變體... –

+0

Jepp,我編輯了這個列表。現在有點混亂: -/ –

+0

'long long'不是標準類型。 –

3

基本類型,你可以在C++標準§ 3.9.1發現的完整列表:

char 

signed char 
short int 
int 
long int 

unsigned char 
unsigned short int 
unsigned int 
unsigned long int 

wchar_t 

bool 

float 
double 
long double 

void 

注意平原charsigned charunsigned char三種不同類型。 C++標準還定義了size_tptrdiff_t(它們不是基本的)。

您可以期望每個標準的一致性編譯器都將支持所有這些類型。每個特定的編譯器可以支持作爲擴展支持的更多附加類型。