On Friday, 22 May 2015 at 06:36:27 UTC, Suliman wrote:
On SO[1] I got next answer:

"What happens when you launch a D application ? The entry point is a C main inside the runtime, which initialize it (the runtime), including module constructor, run the unittest (if you've compiled with -unittest), then call your main (which name is "_Dmain" - useful to know if you want to set a breakpoint with GDB). When Vibe.d's main is called, it parses command line argument, an optional config file, and finally, starts the event loop. Any code that wish to run once the event loop has started should use runTask and similar, or createTimer. They should not call the code directly from the static constructor (it's actually one of the most common mistake when starting with Vibe.d)."

Could you explain what mean "C main inside the runtime". I thought that is only one main is possible. And why it's named "*ะก* main" D is not C-translated language.

Same question is about _Dmain -- what is it?

If I will call this() before main? What it will be? Will it run before main?

[1] http://stackoverflow.com/questions/30302161/cant-connect-to-mysql-mariadb-database-from-vibed-app

Glossing over a lot of the detail:
"_Dmain" is the symbol that is generated in the object file for the function called "main" in your source code. A symbol "main" is also generated, which is where the OS starts the whole program*. It sets up the runtime and module constructors etc. and then calls _Dmain.

*It's sometimes called the "C main" because it's equivalent to "main" in C.

Reply via email to