digitalmars.D.learn - main return value, struct padding
- bearophile (5/5) Jan 20 2009 I post this here, but if later I see it fit I may post something in the ...
- Bill Baxter (3/5) Jan 20 2009 What does it return now? I always assumed returned zero for void main.
- bearophile (5/7) Jan 20 2009 Me too.
- Jarrett Billingsley (4/9) Jan 20 2009 I've only ever seen void mains return 0. I think they used to return
- Steven Schveighoffer (45/50) Jan 20 2009 A test:
- Jarrett Billingsley (3/4) Jan 20 2009 Ha!
- Denis Koroskin (11/16) Jan 20 2009 Yes (but not always), even though specs clearly say that void functions ...
I post this here, but if later I see it fit I may post something in the main D group too. D allows to have the main() function of type void too. In such case I'd like the program return 0 by default. If people agrees, this can become a feature request. A question: when D automatically adds some padding to a struct, is such unused space guaranteed to be initialized to a default constant value, like zero? Bye, bearophile
Jan 20 2009
On Tue, Jan 20, 2009 at 11:15 PM, bearophile <bearophileHUGS lycos.com> wrote:I post this here, but if later I see it fit I may post something in the main D group too. D allows to have the main() function of type void too. In such case I'd like the program return 0 by default. If people agrees, this can become a feature request.What does it return now? I always assumed returned zero for void main. --bb
Jan 20 2009
Bill Baxter:What does it return now?A random int, I presume.I always assumed returned zero for void main.<Me too. Bye, bearophile
Jan 20 2009
On Tue, Jan 20, 2009 at 10:25 AM, bearophile <bearophileHUGS lycos.com> wrote:Bill Baxter:I've only ever seen void mains return 0. I think they used to return random ints but that was fixed long ago. Maybe it's different on Linux?What does it return now?A random int, I presume.I always assumed returned zero for void main.<Me too.
Jan 20 2009
"bearophile" wroteI post this here, but if later I see it fit I may post something in the main D group too. D allows to have the main() function of type void too. In such case I'd like the program return 0 by default. If people agrees, this can become a feature request.A test: [steves localhost testing]$ cat testmainreturn.d void main() { return 1; } [steves localhost testing]$ cat testmainreturn2.d void main() { } [steves localhost testing]$ dmd testmainreturn.d [steves localhost testing]$ dmd testmainreturn2.d [steves localhost testing]$ ./testmainreturn [steves localhost testing]$ echo $? 1 [steves localhost testing]$ ./testmainreturn2 [steves localhost testing]$ echo $? 0 [steves localhost testing]$ dmd | grep "Digital Mars D" Digital Mars D Compiler v1.038 [steves localhost testing]$ disassembly: [steves localhost testing]$ obj2asm testmainreturn.o ... _Dmain: push EBP mov EBP,ESP mov EAX,1 pop EBP ret .text._Dmain ends ... [steves localhost testing]$ obj2asm testmainreturn2.o ... _Dmain: push EBP mov EBP,ESP xor EAX,EAX pop EBP ret .text._Dmain ends ... So it appears it returns 0 unless you return something else (!) -Steve
Jan 20 2009
On Tue, Jan 20, 2009 at 12:21 PM, Steven Schveighoffer <schveiguy yahoo.com> wrote:So it appears it returns 0 unless you return something else (!)Ha!
Jan 20 2009
Jarrett Billingsley Wrote:On Tue, Jan 20, 2009 at 12:21 PM, Steven Schveighoffer <schveiguy yahoo.com> wrote:Yes (but not always), even though specs clearly say that void functions evaluate return values and discard them. IIRC, this one returns 0: void main() { return new Object(); } while this one returns an object address: void foo() { return new Object(); } void main() { return foo(); }So it appears it returns 0 unless you return something else (!)Ha!
Jan 20 2009