tg-me.com/cpp_geek/296
Last Update:
🎯 Как избежать макросов в C++ и остаться довольным
Сегодня я покажу вам, как можно избавиться от макросов в C++ и заменить их на более безопасные и выразительные конструкции.
🔴 Проблема: #define
— это зло.
Они не уважают область видимости, не отлаживаются нормально, не подчиняются типам и могут вызвать кучу проблем, особенно в больших проектах.
👉 Вместо #define PI 3.14
Используем:
constexpr double PI = 3.14;
👉 Вместо
#define SQUARE(x) ((x)*(x))
Используем шаблон:
template<typename T>
constexpr T square(T x) {
return x * x;
}
👉 Вместо
#ifdef DEBUG ... #endif
Используем:
#ifdef DEBUG
inline constexpr bool is_debug = true;
#else
inline constexpr bool is_debug = false;
#endif
А дальше просто:
if constexpr (is_debug) {
std::cout << "Debug mode\n";
}
💡
constexpr
, inline
, template
и if constexpr
— это ваш новый арсенал для выразительного и безопасного кода без макросов.➡️ @cpp_geek
BY C++ geek

Share with your friend now:
tg-me.com/cpp_geek/296