在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将无法有作用。谢谢!
请问ESP_ERROR_CHECK的相关问题
-
- Posts: 37
- Joined: Fri Dec 24, 2021 12:40 pm
Re: 请问ESP_ERROR_CHECK的相关问题
自问自答一下:
在sdkconfig文件中有CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE,就是对断言的优化,本质上就是关闭abort()这个选项。
但是我无意中看到了sdkconfig中也存在编译优化等级,但是在ESP32-C3中sdkconfig没有优化等级
我在网上搜索到的
```cmake
idf_build_set_property(COMPILE_OPTIONS "-O3" APPEND)
```
也有时候不会生效,我想请问,这个编译优化等级到底能设置吗?如果能设置该怎么设置?
在sdkconfig文件中有CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE,就是对断言的优化,本质上就是关闭abort()这个选项。
但是我无意中看到了sdkconfig中也存在编译优化等级,但是在ESP32-C3中sdkconfig没有优化等级
我在网上搜索到的
```cmake
idf_build_set_property(COMPILE_OPTIONS "-O3" APPEND)
```
也有时候不会生效,我想请问,这个编译优化等级到底能设置吗?如果能设置该怎么设置?
-
- Posts: 37
- Joined: Fri Dec 24, 2021 12:40 pm
Re: 请问ESP_ERROR_CHECK的相关问题
再自问自答一下,在CMakeCache这个文件中,我搜索出来-O3,说明在项目根目录CMakeLists的配置文件中:
```c
# 编译优化等级
idf_build_set_property(COMPILE_OPTIONS "-O3" APPEND)
```
生效,那么就是说明只要sdkconfig中-Og那个选项默认,这个优化等级在CMakeLists就会生效,请官方人员看看我说的对不对?
```c
# 编译优化等级
idf_build_set_property(COMPILE_OPTIONS "-O3" APPEND)
```
生效,那么就是说明只要sdkconfig中-Og那个选项默认,这个优化等级在CMakeLists就会生效,请官方人员看看我说的对不对?
Who is online
Users browsing this forum: No registered users and 74 guests