通常在一個動態類型的編程語言中,對象struct有一個用於標識對象類型的標籤字段。 例如:有什麼方法可以在C語句中使用指針嗎?
struct myObject {
int tag;
...
}
所以很容易進行使用基於標籤領域的switch語句不同的動作。 例如:
在我的情況,而不是我使用了指向表示該對象的類一個void * isa指針整型標記字段。一切都很好,希望不要使用優雅的switch語句,我不得不使用一系列if/else語句。例如:
if (obj->isa == class_integer) {
...
} else if (obj->isa == class_string) {
...
} else if (obj->isa == class_func) {
...
}
我知道,我不能使用C開關語句中三分球,但我想,如果我可以使用一些聰明的技巧,以加速比該系列的if語句。
更換
switch
什麼樣的 「加速」 的?你的編譯器不是已經爲你做了嗎? –您不能將非常量表達式用作'case'標籤。 –
@EugeneSh。我猜OP已經意識到了這一點? :) –