C 为什么IntelliSense在我将DDRB定义添加到json时说它找不到DDRB定义,它甚至可以让我查看定义?Visual Studio代码
我有一个简单的C 为什么IntelliSense在我将DDRB定义添加到json时说它找不到DDRB定义,它甚至可以让我查看定义?Visual Studio代码,c,visual-studio-code,intellisense,avr,C,Visual Studio Code,Intellisense,Avr,我有一个简单的blinky.c代码,用于AVR微控制器。它编译和运行没有问题。但是我的vscode中的Intellisense有点疯狂 #定义F#U CPU 1600000UL #定义LED_引脚0 #包括 但是,当我去“去定义”它甚至让我看到它。那么为什么它会给我这个智能感知错误呢 现在就清除Linux上的Im(Manjaro)。我已经为avrs到pamac安装了所有需要的libs,它们都可以工作。好的,我找到了解决方案。这是由avr/io.h文件的内部结构引起的。它包括一个特定的文件,其定
blinky.c
代码,用于AVR
微控制器。它编译和运行没有问题。但是我的vscode中的Intellisense有点疯狂
#定义F#U CPU 1600000UL
#定义LED_引脚0
#包括
但是,当我去“去定义”它甚至让我看到它。那么为什么它会给我这个智能感知错误呢
现在就清除Linux上的Im(Manjaro)。我已经为avr
s到pamac
安装了所有需要的libs,它们都可以工作。好的,我找到了解决方案。这是由avr/io.h
文件的内部结构引起的。它包括一个特定的文件,其定义基于源代码中给定微控制器的#define
。因此,当我不指定控制器时,它不会将它包含在io.h
中,因此它对IntelliSense不可见,但编译可以看到它,因为我指定了它。因此,为了使io.h
包含我们需要的定义。我们必须告诉它我们将使用哪个控制器。就像这样:
#定义uuu AVR_uatmega328p__
因此,现在我的代码如下所示:
#定义F#U CPU 1600000UL
#定义LED_引脚0
#在Mega328p上定义AVR__
#包括
#包括
void main()
{
DDRB |=(1似乎因为编译成功,编译器在某些编译器选项中定义了\uuu AVR\u ATmega328P\uuuu
。可能在-mmcu=
中
当您在源代码中定义它时,它可能会与那些编译器选项混淆
“更好”的方法是正确设置IntelliSense配置文件,这样它就不会影响编译
c_cpp_properties.json:
{
"configurations": [
{
...
"defines": ["__AVR_ATmega328P__"],
...
}
],
"version": 4
}
{
"configurations": [
{
...
"defines": ["__AVR_ATmega328P__"],
...
}
],
"version": 4
}