Corelink CPP Client
Corelink C++ client library
 
Loading...
Searching...
No Matches
platform_macros.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "typedefs.hpp"
4
16#ifdef _WIN32
21#define CORELINK_EXPORT __declspec(dllexport)
26#define CORELINK_IMPORT __declspec(dllimport)
27#else
28#define CORELINK_EXPORT
29#define CORELINK_IMPORT
30#endif
31
88#if defined(_WIN32)
89#define CORELINK_CPP_PLATFORM_IDENTIFIER _MSC_VER
90#define CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP17 1927
91#define CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP14 1911
92#define CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP11 1800
93#elif defined (__cplusplus)
94#define CORELINK_CPP_PLATFORM_IDENTIFIER __cplusplus
95#define CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP17 201703
96#define CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP14 201402
97#define CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP11 201103
98#else
99#error "Cannot determine a platform macro to determine CPP version! Please contact the corelink development team"
100#endif
101
105#define CORELINK_CHECK_CPP_VERSION_CONFORMANCE(version) (CORELINK_CPP_PLATFORM_IDENTIFIER >= version)
106
107#if CORELINK_CHECK_CPP_VERSION_CONFORMANCE(CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP17)
108#define CORELINK_CPP17_SUPPORTED
109#elif CORELINK_CHECK_CPP_VERSION_CONFORMANCE(CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP14)
110#define CORELINK_CPP14_SUPPORTED
111#elif CORELINK_CHECK_CPP_VERSION_CONFORMANCE(CORELINK_CPP_LEAST_CONFORMANCE_VERSION_CPP11)
112#define CORELINK_CPP11_SUPPORTED
113#else
114#error "Unsupported compiler version"
115#endif
116
117#if defined(CORELINK_CPP17_SUPPORTED)
118#define CORELINK_CPP_ATTR_MAYBE_UNUSED [[maybe_unused]]
119#else
120#define CORELINK_CPP_ATTR_MAYBE_UNUSED
121#endif
122
123#define CORELINK_UNUSED(x) do {(void)x;} while(false)