|
|
|
|
|
by argorain
505 days ago
|
|
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. |
|
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).