tags:

views:

68

answers:

1

Suppose I have the module test.erl, and inside it is the macro TOTAL:

-module(test)
-export([...])

-define(TOTAL,(100))

...

If get_total() was defined in test.erl, I could call test:get_total(). from the REPL

How do I call ?TOTAL (the macro) outside of the module test.erl without defining a function?

+10  A: 

You could put the -define in a test.hrl file, and use -include to include that in other modules. See the Erlang Preprocessor documentation for more information.

test.hrl

-define(TOTAL, (100)).

test.erl

-module(test).
-export([...]).

-include("test.hrl").

...

other.erl

-module(other).

-include("test.hrl").

io:format("TOTAL=~p~n", [?TOTAL]).
Greg Hewgill
Not only "could" - that is how you "should" do it! ;)
E Dominique
Not what I was expecting, but this works very well and seems to be "best practice". Thanks!
Enrico
Think C macros and you won't go far wrong, except not so many features.
rvirding