infix
A JIT-Powered FFI Library for C
Loading...
Searching...
No Matches
Version Information

Macros defining the semantic version of the infix library. More...

Classes

struct  infix_version_t
 A structure representing the semantic version of the library. More...
 

Macros

#define INFIX_MAJOR   0
 
#define INFIX_MINOR   1
 
#define INFIX_PATCH   4
 
#define _INFIX_HAS_C_ATTRIBUTE(x)   0
 
#define INFIX_API
 Symbol visibility macro.
 
#define INFIX_NODISCARD
 A compatibility macro for the C23 [[nodiscard]] attribute.
 

Detailed Description

Macros defining the semantic version of the infix library.

The versioning scheme follows Semantic Versioning 2.0.0 (SemVer).

Macro Definition Documentation

◆ _INFIX_HAS_C_ATTRIBUTE

#define _INFIX_HAS_C_ATTRIBUTE (   x)    0

◆ INFIX_API

#define INFIX_API

Symbol visibility macro.

infix relies on a unity build so we've been lax about symbol visibility. Functions like _infix_set_error or _infix_type_recalculate_layout are shared between internal modules (files included by infix.c) and thus cannot be static. However, this means that if infix.c is compiled into a shared library (libinfix.so), all of these internal infix* functions are exported in the dynamic symbol table. This pollutes the ABI and allows users to link against internal functions that might change.

◆ INFIX_MAJOR

#define INFIX_MAJOR   0

The major version number. Changes with incompatible API updates.

◆ INFIX_MINOR

#define INFIX_MINOR   1

The minor version number. Changes with new, backward-compatible features.

◆ INFIX_NODISCARD

#define INFIX_NODISCARD

A compatibility macro for the C23 [[nodiscard]] attribute.

This attribute is used to issue a compiler warning if the return value of a function is ignored by the caller. This is extremely useful for catching bugs where an error code or an important result is not checked.

This macro expands to:

  • [[nodiscard]] on compilers that support the C23 standard syntax.
  • __attribute__((warn_unused_result)) on GCC and Clang.
  • _Check_return_ on Microsoft Visual C++.
  • Nothing on other compilers.

This is aliased as c23_nodiscard in compat_c23.h.

◆ INFIX_PATCH

#define INFIX_PATCH   4

The patch version number. Changes with backward-compatible bug fixes.