Browse Source

avoid clashing definition of round

only enabled if targeting C or a C++ version older than c++17, as it's
assumed that it works in those cases (Arduino targets c++14)
main
John Robinson 3 years ago
parent
commit
76dab293f7
No known key found for this signature in database
1 changed files with 7 additions and 4 deletions
  1. +7
    -4
      teensy4/wiring.h

+ 7
- 4
teensy4/wiring.h View File

#define typeof(a) decltype(a) #define typeof(a) decltype(a)
#endif #endif


#if !defined(__cplusplus) || __cplusplus < 201703L
#define abs(x) ({ \ #define abs(x) ({ \
typeof(x) _x = (x); \ typeof(x) _x = (x); \
(_x > 0) ? _x : -_x; \ (_x > 0) ? _x : -_x; \
}) })
#define round(x) ({ \
typeof(x) _x = (x); \
(_x>=0) ? (long)(_x+0.5) : (long)(_x-0.5); \
})
#endif /* __cplusplus < 201703L */

#define constrain(amt, low, high) ({ \ #define constrain(amt, low, high) ({ \
typeof(amt) _amt = (amt); \ typeof(amt) _amt = (amt); \
typeof(low) _low = (low); \ typeof(low) _low = (low); \
typeof(high) _high = (high); \ typeof(high) _high = (high); \
(_amt < _low) ? _low : ((_amt > _high) ? _high : _amt); \ (_amt < _low) ? _low : ((_amt > _high) ? _high : _amt); \
}) })
#define round(x) ({ \
typeof(x) _x = (x); \
(_x>=0) ? (long)(_x+0.5) : (long)(_x-0.5); \
})
#define radians(deg) ((deg)*DEG_TO_RAD) #define radians(deg) ((deg)*DEG_TO_RAD)
#define degrees(rad) ((rad)*RAD_TO_DEG) #define degrees(rad) ((rad)*RAD_TO_DEG)
#define sq(x) ({ \ #define sq(x) ({ \

Loading…
Cancel
Save