嘿哟!
我已经使用了一段时间的语法检查插件,并一直享受的经验,除了一个恼人的bug,我似乎不知道如何消除。
每当我尝试在我的C程序中使用NULL时,我都会得到一个以红色">>“表示的错误和一个错误气泡,表示"use of undeclared identifier 'NULL' [undefined:]"。

我没有问题使用头文件和程序编译没有任何问题。当我试图实现使用空指针或NULL来表示空闲空间的数据结构时,看到一堆错误标志是非常令人恼火的。
我正在使用gcc编译器,并将vimrc中的编译选项设置为:
let g:syntastic_c_compiler_options= '-std=c18'(如果我从vimrc中删除行并让它回到由语法检查器配置文件在-gnu99中设置的默认~/.vim/plugged/syntastic/syntax_checkers/c/gcc.vim,则不会发生任何变化)
:SyntasticInfo输出
Syntastic version: 3.10.0-7 (Vim 802, Linux, GUI)
Info for filetype: c
Global mode: active
Filetype c is active
The current file will be checked automatically
Available checkers: gcc make
Currently enabled checkers: gcc希望这里有人处理过类似的问题或者有一些解决办法的想法。
提前谢谢!!
编辑1:同步配置命令在.vimrc中的应用
"Syntastic settings
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
"C Settings
let g:syntastic_c_compiler = 'gcc'
let g:syntastic_c_checkers=['gcc']
let g:syntastic_c_include_dirs=['/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include']
let g:syntastic_c_auto_refresh_includes = 1
let g:syntastic_c_compiler_options= '-std=c18'
let g:syntastic_c_check_header = 1增加这个来帮助诊断,必须说非常感谢大家付出他们的投入,并试图帮助我!
编辑2:
我编辑了编译器选项,以便:
let g:syntastic_c_compiler_options= '-I/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include -Wall -std=c18'基于@ based 3629249的建议。现在,未声明的标识符'NULL‘错误显示在: error窗口中(这可以归因于-Wall标志)。但进步就是进步:)。只需要了解如何配置Syntastic来理解NULL,这实际上是在<stddef.h>中定义的。
发布于 2020-05-03 11:41:00
问题似乎是由于stddef.h文件在gcc文件夹中很深(参见上面)而不是在/usr/include中,所以Syntastic没有访问它。制作stddef.h的副本并将其放在/usr/include中似乎解决了我正在处理的有关NULL使用的问题。希望这不会引起任何进一步的问题。
再次感谢大家的投入,我希望这能给将来的人带来一些麻烦:)。
https://stackoverflow.com/questions/61564101
复制相似问题