在erlang中比较宏中的两个字符串时程序出错
error in program while comparing two string in macro in erlang
我写了宏来比较两个字符串如下
-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
宏不像函数定义。预处理器只是简单地进行字符串替换。所以在你的情况下你必须删除大括号中的点:
-define(macro1(X,Y),{if X == Y -> "True"; true ->"False" end}).
我写了宏来比较两个字符串如下
-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
宏不像函数定义。预处理器只是简单地进行字符串替换。所以在你的情况下你必须删除大括号中的点:
-define(macro1(X,Y),{if X == Y -> "True"; true ->"False" end}).