Heyo!
Я уже некоторое время использую плагин проверки синтаксиса Syntasti c и действительно наслаждаюсь этим, за исключением одной раздражающей ошибки, которую я не могу понять, как устранить.
Каждый раз, когда я пытаюсь использовать NULL в моих C программах, я получаю сообщение об ошибке, обозначаемое красным " >> ", и сообщение об ошибке с надписью "use of undeclared identifier 'NULL' [undefined:]"
> Ссылка на скриншот проблемы << ">
У меня нет проблем с использованием заголовочных файлов, и программа компилируется без проблем. Просто визуально довольно раздражает видеть кучу флагов ошибок, когда я я пытаюсь реализовать структуры данных, которые используют NULL-указатели или NULL для обозначения свободного места.
Я использую компилятор g cc и установил параметры компиляции в моем vimr c для:
let g:syntastic_c_compiler_options= '-std=c18'
(ничего не изменится, если я удалю строку из моего vimr c и позволю ей вернуться к значению по умолчанию -gnu99
, как установлено в файлах конфигурации syntacti c syntax-checkers в ~/.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: Syntasti c команды конфигурации в * 10 32 *
"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'
, основываясь на предложении @ user3629249. Теперь ошибка необъявленного идентификатора 'NULL' отображается в окне: Ошибки (это можно отнести к флажку -Wall
). Но прогресс есть прогресс :). Просто нужно понять, как настроить Syntasti c, чтобы понять, что NULL на самом деле определен в <stddef.h>
.