no because the macros arguments are not evaluated just replaced. they are only evaluated when the case statement is at runtime. A quick example, using `io:format` shows this:

```erlang
-module(mod).

-compile(export_all).

-define(M(X, Y), case random:uniform(5) < 2 of
                     true -> X;
                     false -> Y
                 end).

a() ->
    ?M(io:format("a~n"), io:format("b~n")).
```

```
11> mod:a().
b
ok
12> mod:a().
a
ok
```