Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 某些头文件只能从主文件中包括吗?_C_Include_Esp32_Esp Idf - Fatal编程技术网

C 某些头文件只能从主文件中包括吗?

C 某些头文件只能从主文件中包括吗?,c,include,esp32,esp-idf,C,Include,Esp32,Esp Idf,我正在使用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

我正在使用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 ".")

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

您肯定能够包含来自任何位置的文件。将REQUIRES添加到idf_component_register命令中应该可以解决以下问题:idf_component_registerSRCS table.c INCLUDE_DIRS。需要英国电信


这是IDF中包含其他组件的一般方式。

您肯定能够包含来自任何位置的文件。将REQUIRES添加到idf_component_register命令中应该可以解决以下问题:idf_component_registerSRCS table.c INCLUDE_DIRS。需要英国电信


这是IDF中包含其他组件的一般方式。

在命令IDF.py menuconfig中,一旦启用蓝牙组件配置-->蓝牙-->蓝牙,这些头文件将自动加载。

在命令IDF.py menuconfig中,一旦启用蓝牙组件配置-->蓝牙-->蓝牙,这些头文件将自动加载。

如何不包含它们?当然我可以编写include which.h,但编译时编译器会抱怨头文件不存在。只有在包含组件文件而不是main.c文件的标题时,才会出现此错误。我将对问题进行编辑以使其更清楚。component1中是否有component.mk?是的,您肯定能够包含来自任何位置的文件。我对构建系统机制不是100%熟悉,但您是否可以尝试将REQUIRES bt添加到您的idf_组件_注册表中,例如:idf_组件_注册表rcs table.c INCLUDE_DIRS。需要bt?@theHoatzin您使用什么命令来构建项目?您的IDF版本是什么?如何不包含它们?当然我可以编写include which.h,但编译编译器时会抱怨标头不存在。只有在包含组件文件而不是main.c文件的标题时,才会出现此错误。我将对问题进行编辑以使其更清楚。component1中是否有component.mk?是的,您肯定能够包含来自任何位置的文件。我对构建系统机制不是100%熟悉,但您是否可以尝试将REQUIRES bt添加到您的idf_组件_注册表中,例如:idf_组件_注册表rcs table.c INCLUDE_DIRS。需要bt?@theHoatzin您使用什么命令来构建项目?你的IDF版本是什么?