mirror of
https://github.com/raysan5/raylib.git
synced 2025-09-13 14:58:15 +00:00
raymath.h: Use C99 inline semantics
RAYMATH_EXTERN_INLINE was renamed to RAYMATH_HEADER_ONLY, which user code may define if they want to use it as header-only library. If multiple files in the same project define RAYMATH_HEADER_ONLY, they might each have duplicate out-of-line definitions of the same functions. By default, raymath.h exposes inline definitions, which instructs the compiler _not_ to generate out-of-line definitons, if out-of-line definitions are required, those of the file defined with RAYLIB_IMPLEMENTATION are used instead. There may be only one such file. In C++ mode, the compiler will select only one out-of-line definition automatically, so no need to define a RAYLIB_IMPLEMENTATION. Unfortunately, we have to remove raymath function declaration from raylib.h as those declarations would lead to duplicate out-of-line definitions which would yield linker errors. This problem didn't exist with GNU89 or C++, because there multiple defintions are ok, but in C99 they aren't.
This commit is contained in:
21
src/raylib.h
21
src/raylib.h
@@ -338,14 +338,6 @@ typedef struct Matrix {
|
||||
float m3, m7, m11, m15;
|
||||
} Matrix;
|
||||
|
||||
typedef struct Float3 {
|
||||
float f[3];
|
||||
} Float3;
|
||||
|
||||
typedef struct Float16 {
|
||||
float f[16];
|
||||
} Float16;
|
||||
|
||||
// Color type, RGBA (32bit)
|
||||
typedef struct Color {
|
||||
unsigned char r;
|
||||
@@ -750,19 +742,6 @@ RLAPI Vector3 ColorToHSV(Color color); // Returns HSV
|
||||
RLAPI Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value
|
||||
RLAPI Color Fade(Color color, float alpha); // Color fade-in or fade-out, alpha goes from 0.0f to 1.0f
|
||||
|
||||
// Math useful functions (available from raymath.h)
|
||||
RLAPI Vector3 Vector3Zero(void); // Vector with components value 0.0f
|
||||
RLAPI Vector3 Vector3One(void); // Vector with components value 1.0f
|
||||
RLAPI Matrix MatrixIdentity(void); // Returns identity matrix
|
||||
#ifndef Vector3ToFloat
|
||||
#define Vector3ToFloat(vec) (Vector3ToFloat_(vec).f) // Returns Vector3 as float array
|
||||
RLAPI Float3 Vector3ToFloat_(Vector3 vec); // don't use, use above
|
||||
#endif
|
||||
#ifndef MatrixToFloat
|
||||
#define MatrixToFloat(mat) (MatrixToFloat_(mat).f) // Returns Matrix as float array
|
||||
RLAPI Float16 MatrixToFloat_(Matrix mat); // don't use, use above
|
||||
#endif
|
||||
|
||||
// Misc. functions
|
||||
RLAPI void ShowLogo(void); // Activate raylib logo at startup (can be done with flags)
|
||||
RLAPI void SetConfigFlags(unsigned char flags); // Setup window configuration flags (view FLAGS)
|
||||
|
Reference in New Issue
Block a user