diff --git a/arch/posix/include/posix_cheats.h b/arch/posix/include/posix_cheats.h index 07ddc638ed..778eb16023 100644 --- a/arch/posix/include/posix_cheats.h +++ b/arch/posix/include/posix_cheats.h @@ -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