Ouh, haven't read that you don't want code to be mixed-in.. In that case.. I dunno :)
2011/7/29 Aleksandar Ružičić <ruzicic.aleksan...@gmail.com>: > If I'm not mistaken extern() accepts only Identifier, not expression. > I'm not really sure what's the best way to do that but I belive this > should work (haven't tested): > > enum code = q{ > > void func() { > // do something > } > }; > > version (Windows) { > extern (Windows) { > mixin(code); > } > } else { > extern (C) { > mixin(code); > } > } > > On Sun, Jul 24, 2011 at 5:35 AM, Nick Sabalausky <a@a.a> wrote: >> Is there a way to have a section of code be extern(C) on one OS and >> extern(Windows) on another OS, without resorting making the code in question >> a mixin? >> >> These doesn't appear to work: >> >> ------------------------------ >> version(Windows) >> { >> enum callingConvention = "Windows"; >> } >> else >> { >> enum callingConvention = "C"; >> } >> >> extern(mixin(callingConvention )) >> { >> /+ ...code here... +/ >> } >> ------------------------------ >> version(Windows) >> { >> extern(Windows): >> } >> else >> { >> extern(C): >> } >> >> /+ ...code here... +/ >> >> extern(D): >> ------------------------------ >> >> >> >> >> >