请问ESP_ERROR_CHECK的相关问题
Posted: Tue Apr 19, 2022 6:01 am
在ESP_ERROR_CHECK的源码实现中
```c
#ifdef NDEBUG
#define ESP_ERROR_CHECK(x) do { \
esp_err_t __err_rc = (x); \
(void) sizeof(__err_rc); \
} while(0)
#elif defined(CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT)
#define ESP_ERROR_CHECK(x) do { \
esp_err_t __err_rc = (x); \
if (__err_rc != ESP_OK) { \
abort(); \
} \
} while(0)
#else
#define ESP_ERROR_CHECK(x) do { \
esp_err_t __err_rc = (x); \
if (__err_rc != ESP_OK) { \
_esp_error_check_failed(__err_rc, __FILE__, __LINE__, \
__ASSERT_FUNC, #x); \
} \
} while(0)
#endif
```
我看到有设置NDEBUG,这个宏是在Debug的时候设置的,如果我先在CMake中取消这个Debug设置,该怎么做?因为如果不取消这个Debug,那CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT将无法有作用。谢谢!
```c
#ifdef NDEBUG
#define ESP_ERROR_CHECK(x) do { \
esp_err_t __err_rc = (x); \
(void) sizeof(__err_rc); \
} while(0)
#elif defined(CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT)
#define ESP_ERROR_CHECK(x) do { \
esp_err_t __err_rc = (x); \
if (__err_rc != ESP_OK) { \
abort(); \
} \
} while(0)
#else
#define ESP_ERROR_CHECK(x) do { \
esp_err_t __err_rc = (x); \
if (__err_rc != ESP_OK) { \
_esp_error_check_failed(__err_rc, __FILE__, __LINE__, \
__ASSERT_FUNC, #x); \
} \
} while(0)
#endif
```
我看到有设置NDEBUG,这个宏是在Debug的时候设置的,如果我先在CMake中取消这个Debug设置,该怎么做?因为如果不取消这个Debug,那CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT将无法有作用。谢谢!