Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
C++ main function doesn't need return but has int return type (cppreference.com)
3 points by argorain on Jan 29, 2025 | hide | past | favorite | 4 comments


TIL C++ has exception for main function to be without return even though they forced it to have int return type. Can someone explain to me why this was done? C was happy with void return type but C++ forces int, yet implicitly adds return 0 if missing.


I'm pretty sure main is supposed to be declared with an int return type, but the compiler may specify something else.

My reading of https://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf says the C99 spec requires "int main(void)", "int main(int argc, char *argv[])" or "some other implementation-defined manner".

There's also the clause that if the type is compatible with int then "reaching the } that terminates the main function returns a value of 0.".

In other words, C implicitly adds return 0 if missing (and appropriate).


So as to avoid accidentally returning a random (bad) status code for the whole process in the case where no explicitly return is coded. Equivalent to allowing a void return type in C I guess, but maybe less smelly given that the process does actually return something, typically, eg in POSIX environments.


no idea why it was done, but iirc people still wrote it until gurus started emphasizing that you shouldn't around c++11. around that time there was a strong push to differentiate code from looking like "C with classes"




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: