1
宏觀比較兩個字符串我寫的宏來比較兩個字符串作爲跟隨錯誤程序,而在二郎
-module(helloworld).
-export([start/0]).
-define(macro1(X,Y),{if X == Y -> "True"; true ->"False" end.}).
start() ->
io:fwrite("~w",[?macro1("str","str")]).
得到的錯誤如下:
Compiling the source code....
$erlc helloworld.erl 2>&1
helloworld.erl:6: syntax error before: '.'
helloworld.erl:2: function start/0 undefined
我會添加顯示問題中的代碼擴展到。 –
代碼上面的更改以錯誤結束.. helloworld.erl:5:警告:此子句不能匹配,因爲第5行的前一個子句總是匹配 –
這不是錯誤,而是警告。正如我所說的,宏使字符串替換,所以你現在正在編譯一個代碼,其中'X == Y'的結果總是爲真,因爲X和Y都被替換爲「str」。編譯器警告你,if的第二個子句永遠不會被執行。如果通過'start(X) - > io:fwrite(「)來定義'start() - > io:fwrite(」〜w「,[?macro1(」str「,」str「)] 〜w「,[?macro1(X,」str「)])。',你將不會有任何警告,因爲每個條件都可以匹配,這取決於X值。 – Pascal