Hey now, markdown serves it’s purpose. It’s not great, but as a web dev, I don’t want people expecting full WYSIWYG editors in every website cause fuck that!
Interesting feature, I had no idea. I just verified this with gcc and indeed the return register is always set to 0 before returning unless otherwise specified.
spoiler
intmain(void){
int foo = 10;
}
produces:
push%rbp
mov %rsp,%rbp
movl $0xa,-0x4(%rbp) # Move 10 to stack variable
mov $0x0,%eax# Return 0pop%rbp
ret
intmain(void){
int foo = 10;
return foo;
}
produces:
push%rbp
mov %rsp,%rbp
movl $0xa,-0x4(%rbp) # Move 10 to stack variable
mov -0x4(%rbp),%eax# Return foopop%rbp
ret
Should return 0;.
>What is C++? A miserable huge pile of "should"s
Love me some Castlevania++
should have a space after „>” and two new lines after „?”.
I guess markdown is miserable as well.
Hey now, markdown serves it’s purpose. It’s not great, but as a web dev, I don’t want people expecting full WYSIWYG editors in every website cause fuck that!
Still love it tho. You can make it whatever you want!
Not needed, main in C++ implicitly returns 0 if there is no return
Should ≠ Needs to
You can do it, and it will work, but it’s unclean and not best-practice. I wouldn’t be surprised if it’s undefined behaviour.
Just to clarify. It is defined behavior - there’s plenty of undefined behavior in C but that ain’t one of them.
Interesting feature, I had no idea. I just verified this with gcc and indeed the return register is always set to 0 before returning unless otherwise specified.
spoiler
int main(void) { int foo = 10; }
produces:
push %rbp mov %rsp,%rbp movl $0xa,-0x4(%rbp) # Move 10 to stack variable mov $0x0,%eax # Return 0 pop %rbp ret
int main(void) { int foo = 10; return foo; }
produces:
push %rbp mov %rsp,%rbp movl $0xa,-0x4(%rbp) # Move 10 to stack variable mov -0x4(%rbp),%eax # Return foo pop %rbp ret
It likely does, at some point within the ellipsis.