浏览该文件的文档.
32#define LIBCARLA_ASSERT_LEVEL_DEBUG 30
33#define LIBCARLA_ASSERT_LEVEL_DEVELOPMENT 20
34#define LIBCARLA_ASSERT_LEVEL_RELEASE 10
37#ifndef LIBCARLA_ASSERT_LEVEL
39# define LIBCARLA_ASSERT_LEVEL LIBCARLA_ASSERT_LEVEL_DEVELOPMENT
41# define LIBCARLA_ASSERT_LEVEL LIBCARLA_ASSERT_LEVEL_DEBUG
46#if (LIBCARLA_ASSERT_LEVEL >= LIBCARLA_ASSERT_LEVEL_DEBUG)
48# error Cannot have debug asserts with NDEBUG enabled.
54#if (LIBCARLA_ASSERT_LEVEL >= LIBCARLA_ASSERT_LEVEL_DEBUG)
55# define DEBUG_ONLY(code) code
57# define DEBUG_ONLY(code)
61#if (LIBCARLA_ASSERT_LEVEL >= LIBCARLA_ASSERT_LEVEL_DEVELOPMENT)
62# define DEVELOPMENT_ONLY(code) code
64# define DEVELOPMENT_ONLY(code)
68#define DEBUG_ASSERT(predicate) DEBUG_ONLY(assert(predicate));
70#define DEBUG_ERROR DEBUG_ASSERT(false);
73#ifdef LIBCARLA_WITH_GTEST
74# include <gtest/gtest.h>
77# define DEBUG_ASSERT_EQ(lhs, rhs) DEBUG_ONLY(EXPECT_EQ(lhs, rhs));DEBUG_ASSERT(lhs == rhs);
78# define DEBUG_ASSERT_NE(lhs, rhs) DEBUG_ONLY(EXPECT_NE(lhs, rhs));DEBUG_ASSERT(lhs != rhs);
81# define DEBUG_ASSERT_EQ(lhs, rhs) DEBUG_ASSERT((lhs) == (rhs))
82# define DEBUG_ASSERT_NE(lhs, rhs) DEBUG_ASSERT((lhs) != (rhs))
85#define LIBCARLA_ASSERT_THROW__(pred, msg) if (!(pred)) { ::carla::throw_exception(std::runtime_error(msg)); }
89#define DEVELOPMENT_ASSERT(pred) DEVELOPMENT_ONLY(LIBCARLA_ASSERT_THROW__(pred, #pred))
94#define RELEASE_ASSERT(pred) LIBCARLA_ASSERT_THROW__(pred, #pred)