【发布时间】:2015-09-08 13:31:53
【问题描述】:
macro模块:
-module(macro).
-include_lib("eunit/include/eunit.hrl").
-define(EXPAND(_T), ??_T).
macro_test() ->
?assertEqual("Test", ?EXPAND(Test)),
?assertEqual("Test.test", ?EXPAND(Test.test)).
结果:
6> c(macro).
{ok,macro}
7> eunit:test(macro).
macro: macro_test (module 'macro')...*failed*
in function macro:'-macro_test/0-fun-1-'/1 (macro.erl, line 9)
**error:{assertEqual_failed,[{module,macro},
{line,9},
{expression,"? EXPAND ( Test . test )"},
{expected,"Test.test"},
{value,"Test . test"}]}
=======================================================
Failed: 1. Skipped: 0. Passed: 0.
error
是我做错了什么还是这是一个已知的错误?
TIA
【问题讨论】:
-
您应该详细说明您要完成的工作。
-
@SteveVinoski 我认为这很明显。我正在尝试使用 erlang 宏的 Stringifying Macro Arguments 功能
-
是的,这很明显。但这不是你的最终目标,不是吗?我真的想问为什么你需要将
Test.test精确地字符串化为"Test.test",即你最终想要完成什么?