2011-04-25 39 views
1

我有2個定義:二郎defin萬一..的

-define(LOGIN_PACKET, 1). 
-define(LOGOUT_PACKET, 2). 

的嘗試:

case func(...) of 
    LOGIN_PACKET -> 
       .....; 
    LOGOUT_PACKET -> 
       ...... 
end 

,但我得到警告:

本條款所不能比擬的,因爲以前的條款在第209行總是匹配。

爲什麼?在Erlang的情況下,我們可以使用定義嗎?

謝謝。

回答

5

做到像下面

 
case func(...) of 
    ?LOGIN_PACKET -> 
       .....; 
    ?LOGOUT_PACKET -> 
       ...... 
end 

+3

你總是要前綴'宏名?'將其展開。 – rvirding 2011-04-25 20:23:30

+0

是的,我一直用它來擴展。 :) – Arunmu 2011-04-26 03:37:51

+0

我只是評論*爲什麼*你用'?'爲前綴宏,以擴展它。如果你設法擴展一個沒有*前綴的宏*,那麼我會留下深刻的印象。 :-) – rvirding 2011-04-26 20:33:29