2013-03-29 143 views
2

我有一個函數可以獲取預定義的特定枚舉類型的操作數。出於安全原因,我希望函數測試操作數是否屬於特定的枚舉類型。我怎樣才能做到這一點?枚舉類型檢查

+0

您可以對所有enms的域進行測試用例 –

+0

C和C++與此不一樣。所以首先你必須決定你想要哪一個。 –

+0

我工作在arduino所以他們說這是一個系統的C/C + +但可以讓我們說C是更好的 – kyrpav

回答

1

如果您enum看起來像:

enum /* ... */ 
{ 
    V1, 
    V2, 
    /* ... */ 
    VN 
}; 

您可以使用條件:

if (v < V1 || v > VN) 
{ 
    /* invalid */ 
} 

但是,如果你給特定的值,你必須覈對每一個值。宏可以幫助你一點。

還有關於這一點的標準,它說,在一個方面:

enum /* ... */ 
{ 
    V1 = 0, 
    V2 = 2, 
}; 

1是用於enum /*...*/類型的有效值。因此,您必須詳細闡述「枚舉類型檢查」對您的意義。

+0

所以這就像是如果我檢查值介於0和maxValueOfEnum之間,因爲在c的枚舉從0開始自動,並且如果枚舉類型不「跳」任何整數 – kyrpav

0

C中的枚舉只是一個整數,所以無法檢查它是否屬於特定的枚舉類型。

+0

是的,但在這個特定的情況下,枚舉是用來傳遞這個整數,所以我認爲這在這裏工作。但如果是不是我應該怎麼做 – kyrpav