DynXX-C
Loading...
Searching...
No Matches
Macro.h
Go to the documentation of this file.
1#pragma once
2
3#if defined(__cplusplus)
4#define DYNXX_EXTERN_C_BEGIN extern "C" {
5#define DYNXX_EXTERN_C_END }
6#if defined(__clang__) || defined(__GNUC__)
7 #define DYNXX_NO_COVERAGE __attribute__((no_profile_instrument_function))
8#else
9 #define DYNXX_NO_COVERAGE
10#endif
11#define DYNXX_EXPORT extern "C" DYNXX_NO_COVERAGE
12#if defined(__EMSCRIPTEN__)
13 #define DYNXX_EXPORT_AUTO DYNXX_EXPORT EMSCRIPTEN_KEEPALIVE
14#else
15 #define DYNXX_EXPORT_AUTO DYNXX_EXPORT
16#endif
17#else
18#define DYNXX_EXTERN_C_BEGIN
19#define DYNXX_EXTERN_C_END
20#endif
21
22#if defined(_MSC_VER)
23 #define DYNXX_FORCE_USED __pragma(comment(linker, "/include:" __FUNCSIG__))
24 #define DYNXX_EXPORT_SYMBOL __declspec(dllexport)
25#elif defined(__GNUC__) || defined(__clang__)
26 #define DYNXX_FORCE_USED __attribute__((used))
27 #define DYNXX_EXPORT_SYMBOL __attribute__((visibility("default")))
28#else
29 #define DYNXX_FORCE_USED
30 #define DYNXX_EXPORT_SYMBOL
31#endif
32#define DYNXX_DONTSTRIP DYNXX_FORCE_USED DYNXX_EXPORT_SYMBOL
33
34#if defined(_MSC_VER)
35 #define DYNXX_DEPRECATED(msg) __declspec(deprecated(msg))
36#elif defined(__GNUC__) || defined(__clang__)
37 #define DYNXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
38#else
39 #define DYNXX_DEPRECATED(msg)
40#endif
41
42#if !defined(DYNXX_OUT)
43#define DYNXX_OUT
44#endif