C语言 某些头文件只能包含在主文件中吗?



我正在使用 ESP-IDF 为 ESP32 开发一个项目。我正在尝试使用组件内的蓝牙库,但编译器抱怨头文件不存在。包含来自main.c的相同头文件没有任何问题。我尝试包含的头文件是:

#include "esp_bt.h"
#include "esp_bt_main.h"
#include "esp_gatts_api.h"
#include "esp_gap_ble_api.h"
#include "esp_gatt_common_api.h"

有什么理由为什么某些头文件只能从main.c包含?是否有任何解决方案,或者是否必须在 main.c 文件中放置某些功能来安抚 ESP-IDF?

注意:我在尝试使用HTTPS服务器时遇到同样的问题,包括头文件。

如果它有任何相关性,这就是我正在使用的项目结构:

- CMakeLists.txt
- Makefile
- sdkconfig
- main
- CMakeLists.txt
- component.mk
- main.c
- components
- component1
- component1.h
- component1.c
- CMakeLists.txt

CMakeLists.txt 文件都是相同的:

idf_component_register(SRCS "ble.c" INCLUDE_DIRS ".")

main 函数是一个非常简单的函数,用于设置环境(例如。NVS_FLASH( 并调用每个组件的设置函数并终止,将程序的控制权留给组件。

您绝对应该能够包含来自任何地方的文件。向idf_component_register命令添加REQUIRES <component-name>应该可以解决问题:idf_component_register(SRCS "ble.c" INCLUDE_DIRS "." REQUIRES bt)

这是 IDF 中包含其他组件的通用方法。

在命令idf.py menuconfig中,一旦启用蓝牙 (Component config--->Bluetooth--->Bluetooth(,这些头文件将自动加载。

相关内容

  • 没有找到相关文章

最新更新