I was wondering if macros could be used to output raw html code, but that doesn't seem to be the case.

Namely:

#+macro: bfoo @@html:<div class"foo">@@
#+macro: efoo @@html:</div>@@

The macros {{{bfoo}}} and {{{efoo}}} are expanded surrounded by <p> ... </p>.

This is quite a limitation. Is it the intended behavior?
If the reason is that the macro could output text that needs the <p> ... </p>, thenĀ 
the problem is the point at which macros are expanded in the flow.
An option would be to allow #+html: in the macro, but that doesn't work. The #+html:
directive gets straight on the output.

Sorry if this has already been discussed here.
(I vaguely remember some discussions about recursive macros)

Fabrice