29 lines
764 B
C
29 lines
764 B
C
#ifndef _H_MCUTIL_LAMBDA
|
|
#define _H_MCUTIL_LAMBDA
|
|
|
|
#if defined(_MSC_VER) && !defined(__MC_LMBD_DEF)
|
|
#define __MCU_LMBD_DEF
|
|
#error "msc TODO"
|
|
#endif
|
|
|
|
#if defined(__clang__) && !defined(__MCU_LMBD_DEF)
|
|
#if !__has_extension(blocks)
|
|
#error "Clang blocks feature is required, compile with '-fblocks -lBlocksRuntime' \
|
|
and make sure you have libblocksruntime(-dev) installed"
|
|
#endif
|
|
|
|
#define __MCU_LMBD_DEF
|
|
#define lambda(ret_t, args_t, body) ( ^ ret_t args_t body )
|
|
#endif
|
|
|
|
#if defined(__GNUC__) && !defined(__MCU_LMBD_DEF)
|
|
#define __MCU_LMBD_DEF
|
|
#define lambda(ret_t, args_t, body) ({ ret_t lambda##__LINE__ args_t body &lambda##__LINE__; })
|
|
#endif
|
|
|
|
#if !defined(__MCU_LMBD_DEF)
|
|
#error "Unsupported compiler"
|
|
#endif
|
|
|
|
#endif
|