Mixin versus c++ preprocessor?
Tim Burrell
tim at timburrell.net
Fri Mar 21 09:37:19 PDT 2008
Yossarian wrote:
> Hello,
> I've got following problem :
> I've used c++ preprocessor for function prototyping, eg.
>
> #define DO_MY_FUNCTION(name, type) int name(type t, type t2)
>
> DO_MY_FUNCTION(f1, int) {
> }
> ..
>
> if you ask why - i got simple interpreted language written, and these
> prototypes were used
> as internal functions, and the order or types of parameters should vary
> between versions.
>
> is there any chance to write code like this in D?
>
You can using mixins, but it looks ugly, you end up with something like:
template DoMyFunction(char[] Name, char[] Type, char [] Body) {
const char[] DoMyFunction = "int " ~ Name ~ "(" ~ Type ~ " " ~ Name
~ ", " ~ Type ~ " " ~ Name ~ ") {" ~ Body ~ "}";
}
mixin(DoMyFunction!("f1", "int", "
// function body
"));
Mixins are great, but in no way a replacement for the C preprocessor. I
think it was a big mistake to not include preprocessing as well.
More information about the Digitalmars-d-learn
mailing list