标识符 "DDRB" 未定义 - VS 代码/Visual studio

identifier "DDRB" is undefined - VS code / Visual studio

我在使用标识符 DDRB 时遇到以下错误:

identifier "DDRB" is undefined

但是,当我点击“go to definition”时,IDE确实显示它可以找到它们。该代码也可以毫无问题地编译。我首先使用 VScode 并将智能感知设置为 "tag parser" 确实有效,但它也摆脱了错误检查。所以,我切换到 Visual Studio,但问题仍然存在。在这两种情况下,我都包含了 AVR 库。

我在谷歌上搜索了很多并找到了一些解决方案,但大多数都已过时或不起作用。我该怎么做才能解决这个问题?

"minimal reproducible example:"

#include <avr\io.h>

int main() {

    DDRB |= (1 << DD3);

}

我可以在 VS2017 中重现同样的问题,这个问题可以通过在 #include <avr\io.h> 上方添加 #define __AVR_ATmega32U4__ 来解决,如下所示:

#define __AVR_ATmega32U4__ 
#include <iostream>
#include <avr/io.h>
int main()
{
    DDRB |= (1 << DD3);
}

添加宏定义后,VS Intellisense 选项可以很好地识别它们,问题消失了。更多详细信息请参阅 Kissiel 的 reply。感谢他!

如果您不想将此定义粘贴到几乎每个文件中:

  1. f1
  2. 找到C/C++; Edit configurations (UI)
  3. 将您的 MCU 名称粘贴到 Defines 部分,例如 __AVR_ATmega32U4__

它在 vs code 中对我有用。