main declaration
bearophile
bearophileHUGS at lycos.com
Fri Mar 19 03:23:36 PDT 2010
Ludovic A. Wrote:
> According to the documentation,main() must be declared using one of the
> following forms:
>
> void main() { ... }
> void main(char[][] args) { ... }
> int main() { ... }
> int main(char[][] args) { ... }
If you use "int main" then you have to add a return, possibly returning std.c.stdlib.EXIT_SUCCESS or std.c.stdlib.EXIT_FAILURE. If you use void it uses a EXIT_SUCCESS.
> However with the latest D2 compiler I can write:
> import std.stdio;
>
> void main (string[] args) {
> writeln("main with string[]");
> }
In D1 Tango doesn't define the alias string that's char[]. But the (string[] args) can be used in D1 too, with Phobos:
http://codepad.org/wUC6N6LB
In D2 string means something different, it's immutable(char)[] that is a mutable array of immutable chars. I hope Tango2 will define string the same way.
So in D1 (string[] args) is the same as (char[][] args), but in D2 they are a little different things. Even if D2 accepts both forms, I think that modifying the contents of args is not a good practice, so in D2 I suggest to use (string[] args), that has immutable chars.
In practice in D2 you can even use main(immutable string[] args), that I think is the best form :-)
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list