Change moon_version() to use a constant expression

This commit is contained in:
apio 2022-09-20 16:38:32 +02:00
parent 1c1aa96293
commit 590740e72a

View File

@ -4,37 +4,36 @@
#define STRINGIZE(x) #x #define STRINGIZE(x) #x
#define STRINGIZE_VALUE_OF(x) STRINGIZE(x) #define STRINGIZE_VALUE_OF(x) STRINGIZE(x)
#ifndef MOON_MAJOR
#define MOON_MAJOR 0
#endif
#ifndef MOON_MINOR
#define MOON_MINOR 3
#endif
#ifndef _MOON_SUFFIX
#define MOON_SUFFIX ""
#else
#define MOON_SUFFIX STRINGIZE_VALUE_OF(_MOON_SUFFIX);
#endif
int __moon_version_major() int __moon_version_major()
{ {
#ifndef MOON_MAJOR
return 0;
#else
return MOON_MAJOR; return MOON_MAJOR;
#endif
} }
int __moon_version_minor() int __moon_version_minor()
{ {
#ifndef MOON_MINOR
return 3;
#else
return MOON_MINOR; return MOON_MINOR;
#endif
} }
const char* __moon_version_suffix() const char* __moon_version_suffix()
{ {
#ifndef _MOON_SUFFIX return MOON_SUFFIX;
return "";
#else
return STRINGIZE_VALUE_OF(_MOON_SUFFIX);
#endif
} }
const char* moon_version() const char* moon_version()
{ {
static char version[64]; return STRINGIZE_VALUE_OF(MOON_MAJOR) "." STRINGIZE_VALUE_OF(MOON_MINOR) MOON_SUFFIX;
snprintf(version, sizeof(version), "%d.%d%s", __moon_version_major(), __moon_version_minor(),
__moon_version_suffix()); // FIXME: this string is constant each build and should only be calculated once
return version;
} }