Diyelim ki kodumda birkaç tür çıkış mesajı var. Bunlardan biri DEBUG
, kod Hata Ayıklama modunda derlendiğinde yalnızca yazdırılır.
Genellikle şöyle bir şey yazmam gerekirdi
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
birçok yerde kullanmak oldukça hantal ve sinir bozucu.
Kod pasajı için bir makro tanımlamak iyi bir uygulamadır, bu yüzden onu bu şekilde kullanırsınız?
MSG_DEBUG("Debug message")
Yoksa makrolarla başa çıkmanın daha zarif bir yolu var mı? Her iki dili de farklı projelerde kullandığım için hem C hem de C ++ ile olası çözümlerle ilgileniyorum.
constexpr if
örneğin C ++ ' da daha iyi uygulanabilir .
STDERR
. Ayrıca, bunun yerine neden olduğu NDEBUG
gibi bağımlı hale assert()
getirmiyorsunuz? Daha sonra bunu #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
, akış durumunu da test eden gibi tanımlayabilirsiniz .