尝试在 ldebug.c 中包含 httpclient.h 在编译期间会导致错误

我的目标是通过包含 httpclient 在 ldebug.c 中进行一个 http post 请求。它可以在 dbg_printf.c 中工作,但是在 ldebug.c 中出现编译错误。

在 ../ldebug.c:28:0 中包含文件
../../http/httpclient.h:69:24: error: 缺少 '=', ',', ';', 'asm''__attribute__'
 void ICACHE_FLASH_ATTR http_request(const char * url, const char * method, const char * headers, const char * post_data, http_callback_t callback_handle, int redirect_follow_count);

有没有其他方法可以进行 post 请求呢?

点赞
用户2670348
用户2670348

ICACHE_FLASH_ATTR是在文件c_types.h中定义的宏。

如果没有定义,有两个可能的原因。

首先,可能ldebug.c没有包含c_types.h文件或包含了一个文件,该文件#包含c_types.h。这很容易解决 - 编辑ldebug.c并添加以下内容:

#include <c_types.h>

在“#include <httpclient.h>”之前。

另一种可能性是当ldebug.c编译时,符号ICACHE_FLASH未定义。文件c_types.h仅在#定义了ICACHE_FLASH时才定义ICACHE_FLASH_ATTR。如果第一个修复方法不起作用,则需要确保在编译ldebug.c时定义了#define ICACHE_FLASH

最简单的方法是将以下内容添加为ldebug.c的第一行:

#define ICACHE_FLASH 1

或者,您可以确保在您的开发环境中将-DICACHE_FLASH = 1设置为编译器标志。几乎肯定更容易更改ldebug.c。

2019-01-04 01:27:44