Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么IntelliSense在我将DDRB定义添加到json时说它找不到DDRB定义,它甚至可以让我查看定义?Visual Studio代码_C_Visual Studio Code_Intellisense_Avr - Fatal编程技术网

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
}