Remix.run Logo
mathisfun123 8 hours ago

> Probably not something you’d encounter in practice

it's actually probably the most common footgun you'll encounter in practice: non-void functions with no return statements just keep executing past their end. ask me how i know.

compile with -Wreturn-type if you want to avoid such things...

mitxela an hour ago | parent | next [-]

In C. In C++ it's an error to not return, as it should be.

kouosi 8 hours ago | parent | prev | next [-]

> compile with -Wreturn-type if you want to avoid such things...

Isn't -Wreturn-type enabled by default in both gcc and clang atleast for c++?

mathisfun123 8 hours ago | parent [-]

probably - i guess then i meant -Werror=return-type

drdexebtjl 5 hours ago | parent | prev [-]

C on the other hand puts an implicit `return 0` at the end, but only on the main function for some reason. Very weird.

mpyne 3 hours ago | parent [-]

C++ also special-cases the `main` function. Probably because `main` is the interface to the OS so it gets special language treatment.

mitxela 38 minutes ago | parent [-]

In C++ you're not allowed to call main yourself, so that the compiler can call the global constructors at the start of main.