fix a bug which use same literal in macro