未知类型名称 'IRsend'
Unknown type name 'IRsend'
在 simplesample_mqtt.c 中的 C 文件中,它将 Arduino 连接到 Azure 物联网中心,我需要使用 IRsend 和 IrRemoteESP8266 库向 Azure 物联网中心发送红外信号。
#include <IRremoteESP8266.h>
#include <IRsend.h>
IRsend irsend(10); // An IR LED is controlled by GPIO pin 4 (D2)
在我的 Ardunio 主文件中使用此代码时没有任何问题。但是当我在 C 文件 (implesample_mqtt.c) 中使用这些包含时,我从第 3 行收到此错误:"unknown type name 'IRsend'".
错误完整信息:
Arduino:1.8.2 (Windows 10),开发板:"NodeMCU 0.9 (ESP-12 Module), 80 MHz, 115200, 4M (3M SPIFFS)"
在 sketch\simplesample_mqtt.c:29:0:
包含的文件中
C:\Program Files (x86)\Arduino\libraries\IRremoteESP8266\src/IRsend.h:29:1:错误:未知类型名称'class'
class IRsend {
C:\Program Files (x86)\Arduino\libraries\IRremoteESP8266\src/IRsend.h:29:14: 错误:应为 '=', ',', ';', 'asm' 或 'attribute' 在 '{' 标记
之前
class IRsend {
simplesample_mqtt.c:31: 错误: 未知类型名称 'IRsend'
IRsend irsend(10); // IR LED 由 GPIO 引脚 4 (D2)
控制
simplesample_mqtt.c:31: 错误:数字常量
前需要声明说明符或“...”
IRsend irsend(10); // IR LED 由 GPIO 引脚 4 (D2)
控制
退出状态 1
未知类型名称 'IRsend'
这份报告将包含更多信息
"Show verbose output during compilation"
在文件 -> 首选项中启用选项。
我解决了这个问题。这是因为主要的ardunio是c++而simplesample_mqtt.c是c代码,我们必须在c代码中使用c++代码:
我主要的ardunio文件你必须像这样声明函数:
extern "C" void TurnOn();
void TurnOn()
{
digitalWrite(RELAY_SONOFF, HIGH);
digitalWrite(LED_SONOFF, HIGH);
}
并在 C 代码中使用此函数:
void TurnOn();
EXECUTE_COMMAND_RESULT TurnOn(ContosoAnemometer* device)
{
(void)device;
TurnOn();
(void)printf("Turning fan on.\r\n");
return EXECUTE_COMMAND_SUCCESS;
}
在 simplesample_mqtt.c 中的 C 文件中,它将 Arduino 连接到 Azure 物联网中心,我需要使用 IRsend 和 IrRemoteESP8266 库向 Azure 物联网中心发送红外信号。
#include <IRremoteESP8266.h>
#include <IRsend.h>
IRsend irsend(10); // An IR LED is controlled by GPIO pin 4 (D2)
在我的 Ardunio 主文件中使用此代码时没有任何问题。但是当我在 C 文件 (implesample_mqtt.c) 中使用这些包含时,我从第 3 行收到此错误:"unknown type name 'IRsend'".
错误完整信息: Arduino:1.8.2 (Windows 10),开发板:"NodeMCU 0.9 (ESP-12 Module), 80 MHz, 115200, 4M (3M SPIFFS)"
在 sketch\simplesample_mqtt.c:29:0:
包含的文件中C:\Program Files (x86)\Arduino\libraries\IRremoteESP8266\src/IRsend.h:29:1:错误:未知类型名称'class'
class IRsend {
C:\Program Files (x86)\Arduino\libraries\IRremoteESP8266\src/IRsend.h:29:14: 错误:应为 '=', ',', ';', 'asm' 或 'attribute' 在 '{' 标记
之前class IRsend {
simplesample_mqtt.c:31: 错误: 未知类型名称 'IRsend'
IRsend irsend(10); // IR LED 由 GPIO 引脚 4 (D2)
控制simplesample_mqtt.c:31: 错误:数字常量
前需要声明说明符或“...”IRsend irsend(10); // IR LED 由 GPIO 引脚 4 (D2)
控制退出状态 1 未知类型名称 'IRsend'
这份报告将包含更多信息 "Show verbose output during compilation" 在文件 -> 首选项中启用选项。
我解决了这个问题。这是因为主要的ardunio是c++而simplesample_mqtt.c是c代码,我们必须在c代码中使用c++代码:
我主要的ardunio文件你必须像这样声明函数:
extern "C" void TurnOn();
void TurnOn()
{
digitalWrite(RELAY_SONOFF, HIGH);
digitalWrite(LED_SONOFF, HIGH);
}
并在 C 代码中使用此函数:
void TurnOn();
EXECUTE_COMMAND_RESULT TurnOn(ContosoAnemometer* device)
{
(void)device;
TurnOn();
(void)printf("Turning fan on.\r\n");
return EXECUTE_COMMAND_SUCCESS;
}