arch: posix: Declare _posix_zephyr_main with int return type
This commit updates the `_posix_zephyr_main` declaration to use the return type of `int` instead of `void` when `CONFIG_CPP_MAIN=y` (i.e. C++-compliant main() support is enabled) so that Zephyr applications defining their main() in a C++ source file can make use of the proper main() definition of `int main(void)` as required by the C++ standard. Note that the forward declaration of `_posix_zephyr_main` is required if and only if the main() is defined in a C++ source file (i.e. when `CONFIG_CPP_MAIN=y`). Signed-off-by: Stephanos Ioannidis <stephanos.ioannidis@nordicsemi.no>
This commit is contained in:
parent
fa5fd41b61
commit
ae0437d2df
|
@ -44,18 +44,13 @@
|
|||
#define main(...) _posix_zephyr_main(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#if defined(__cplusplus) && defined(CONFIG_CPP_MAIN)
|
||||
/* To be able to define main() in C++ code we need to have its prototype
|
||||
* defined somewhere visibly. Otherwise name mangling will prevent the linker
|
||||
* from finding it. Zephyr assumes a void main(void) prototype and therefore
|
||||
* this will be the prototype after renaming:
|
||||
*/
|
||||
void _posix_zephyr_main(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
extern "C" int _posix_zephyr_main(void);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_POSIX_API
|
||||
|
|
Loading…
Reference in a new issue