diff --git a/src/config.cpp b/src/config.cpp index 387c2d20..4c372d1c 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -11,12 +11,14 @@ #include #include -static char *aboutString = 0; +static std::string aboutString; #ifndef FCEUX_BUILD_TIMESTAMP #define FCEUX_BUILD_TIMESTAMP __TIME__ " " __DATE__ #endif +//#pragma message( "Compiling using C++ Std: " __FCEU_STRINGIZE(__cplusplus) ) + // returns a string suitable for use in an aboutbox const char *FCEUI_GetAboutString(void) { @@ -55,14 +57,17 @@ const char *FCEUI_GetAboutString(void) "\n" FCEUX_BUILD_TIMESTAMP "\n"; - if (aboutString) return aboutString; + if (aboutString.size() > 0) return aboutString.c_str(); const char *compilerString = FCEUD_GetCompilerString(); - //allocate the string and concatenate the template with the compiler string - if (!(aboutString = (char*)FCEU_dmalloc(strlen(aboutTemplate) + strlen(compilerString) + 1))) - return NULL; + char cppVersion[128]; - sprintf(aboutString,"%s%s",aboutTemplate,compilerString); - return aboutString; + snprintf( cppVersion, sizeof(cppVersion), "\nCompiled using C++ Language Standard: %li\n", __cplusplus); + + aboutString.assign( aboutTemplate ); + aboutString.append( compilerString ); + aboutString.append( cppVersion ); + + return aboutString.c_str(); } diff --git a/src/types.h b/src/types.h index f1aa1cdb..64f6f6c5 100644 --- a/src/types.h +++ b/src/types.h @@ -143,9 +143,20 @@ typedef uint8 (*readfunc)(uint32 A); #define CTASSERT(x) typedef char __assert ## y[(x) ? 1 : -1]; #endif +#define __FCEU_STRINGIZE2(x) #x +#define __FCEU_STRINGIZE(x) __FCEU_STRINGIZE2(x) + +#define FCEU_CPP_HAS_STD(x) ( defined(__cplusplus) && (__cplusplus >= x) ) + +#ifdef __has_cpp_attribute +#define FCEU_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x) +#else +#define FCEU_HAS_CPP_ATTRIBUTE(x) 0 +#endif + #define FCEU_UNUSED(x) (void)(x) -#if __has_cpp_attribute(maybe_unused) +#if FCEU_CPP_HAS_STD(201603L) || FCEU_HAS_CPP_ATTRIBUTE(maybe_unused) #define FCEU_MAYBE_UNUSED [[maybe_unused]] #else #define FCEU_MAYBE_UNUSED