I know that extern "C" used to turn off the decoration of names, which is often used for exported functions.
And what does extern "C++" do?
The header file corecrt.h contains
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // // C++ Secure Overload Generation Macros // //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ #ifndef RC_INVOKED #if defined __cplusplus && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName, _DstType, _Dst) \ extern "C++" \ { \ template <size_t _Size> \ inline \ _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \ { \ return _FuncName(_Dst, _Size); \ } \ } The macro is further used in stdio.h :
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0( char*, gets_s, char, _Buffer) to declare functions with a fixed-size array:

Visual Studio 2015 Compiler