gpt4 book ai didi

c++ - AVR-C 错误 : expected '=' , ','、 ';'、 'asm' 或 '__attribute__' token 之前的 '<'

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:50 25 4
gpt4 key购买 nike

<分区>

我目前正在尝试获取为 Arduino USB 主机编写的代码库 shield并将其与 Arduino 核心库分离,以便我可以在非 Arduino 微 Controller 项目中使用代码。

通过查看代码,Arduino 代码库没有太多硬依赖性,但我遇到了一些奇怪的错误,这可能是由于 Arduino 构建系统和 LUFA build system 之间的差异造成的.具体来说,我在大约 75% 的头文件中遇到了以下错误,每个错误有几十次:

error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token

有时,错误指示错误中的不同 token ,但它仍然是相同的错误。我在各种论坛和 Stack Overflow 上发现了很多类似的问题,但每次的解决方案往往都不同。

需要说明的是,此代码在 Arduino 构建系统中 100% 编译良好,但当我尝试使用 LUFA 模板 makefile 直接使用 WinAVR 构建时会出现这些错误。通过查看代码,我确定我需要 #define 一些值,例如 -DARDUINO=102(或者至少一些值 >=100,但是我使用的 Arduino IDE 版本是 1.0.2,所以我认为这是一个很好的使用值(value))。

所以我想我正在寻找熟悉 Arduino 构建系统的人来帮助我找出我缺少的东西。可以找到完整的代码库 here , 但为了提供一个简单的示例来演示问题而不包括整个代码库,这里是 printhex.h:

#if !defined(__PRINTHEX_H__)
#define __PRINTHEX_H__

#if defined(ARDUINO) && ARDUINO >=100
#include "Arduino.h"
#else
#include <WProgram.h>
#endif

template <class T>
void PrintHex(T val)
{
T mask = (((T)1) << (((sizeof(T) << 1) - 1) << 2));

while (mask > 1)
{
if (val < mask)
Serial.print("0");

mask >>= 4;
}
Serial.print((T)val, HEX);
}

template <class T>
void PrintHex2(Print *prn, T val)
{
T mask = (((T)1) << (((sizeof(T) << 1) - 1) << 2));

while (mask > 1)
{
if (val < mask)
prn->print("0");

mask >>= 4;
}
prn->print((T)val, HEX);
}

template <class T>
void PrintBin(T val)
{
for (T mask = (((T)1) << (sizeof(T) << 3)-1); mask; mask>>=1)
if (val & mask)
Serial.print("1");
else
Serial.print("0");
}

#endif

我应该注意,我确实将 Arduino.h 复制到我的包含路径,如果我将 Arduino.h 包含到我的主 .c 文件,它编译正常,所以问题不存在。但是,包含 printhex.h 会产生以下内容:

In file included from MIDI.c:38:
Lib/HostShield/printhex.h:26: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
Lib/HostShield/printhex.h:41: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
Lib/HostShield/printhex.h:56: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
make: *** [MIDI.o] Error 1

第 26、41 和 56 行是以下的 3 个实例:

template <class T>

我被难住了。我该如何解决这个问题?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com