#pragma once
#include "Auxiliary/literals.hpp"
#include <stddef.hpp>

#define __used          __attribute__((used))
#define __no_align      __attribute__((packed))
#define __no_inline     __attribute__((noinline))
#define __no_return     __attribute__((noreturn))
#define __always_inline __attribute__((always_inline))
#define __weak          __attribute__((weak))
#define __section(name) __attribute__((section(name)))
#define __collect(...) __VA_ARGS__

#ifndef __friends
    #define __friends private
#endif //!__friends