On Sunday, 22 July 2012 at 10:42:58 UTC, Nick Sabalausky wrote:
Actually, that's just a clever illusion. Your main() method isn't really the first thing called, the first thing called is a function in druntime called dmain (or Dmain or _dmain or something like that, I forget offhand). This function does all the initial stuff like calling all the static/module constructors, initializing druntime including the
GC, some other stuff, and then actually calling *your* main().

It's the other way round. Your main() function gets mangled as _Dmain by the compiler, and druntime has the real (C) main(). On linking, the undefined reference to _Dmain in druntime is resolved to the user-supplied D function.

The D main() is also special in that the compiler transparently rewrites all the »reduced« signatures (without return value and param array) to the full one.

David

Reply via email to