最近,我一直在使用vscode+EIDE插件来查看修改stm32单片机程序,遇到了一些结构体变量或者结构体指针变量无法访问内部成员的"语法提示"功能,现在对几种情况进行记录。
(1)vscode+EIDE+c/c++插件+IAR stm32项目
也就是使用c/c++插件的语法提示功能,使用EIDE插件导入IAR项目工程。导入后存在语法不提示问题,也就是当输入结构体变量名的时候不自动弹出列表,更不用说成员变量列表自动弹出功能了。
详情请查看:
https://discuss.em-ide.com/d/1206-eideiar-armcc
我测试了好几遍,无论是将整个项目的文件夹添加到工作区,还是导入一个新的IAR STM32工程都无法做到输入结构体成员的时候有自动菜单弹出提示。我已经在EIDE论坛中详细说明了,希望作者能够协助解决一下。
(2)vscode+EIDE+c/c+++keil MDK项目
导入工程后,c/c++插件下能够实现结构体成员语法提示,以及结构体变量语法提示,如下图所示:

(3)vscode+EIDE+clangd+IAR STM32项目
导入IAR Stm32工程后,需要修改工作区的clangd参数,添加EIDE插件自动生成的compile_commands.json路径,如下图所示:

最后,右键编辑器-》命令面板--》重新解析clangd

(4)vscode+EIDE+clangd+keil MDK项目
在项目所在文件夹同一层目录创建一个EIDE的文件夹,用于不污染源文件内容,存储EIDE生成的一系列文件。

然后,同样的在clangd插件的工作区中设置clangd参数,指定compile_commands.json的路径。

最后,右键编辑区--》命令面板---》clangd重新解析

总结:
(1)vscode+EIDE+clangd插件无论导入keil MDK或者IAR STM32工程都没有语法提示问题。
(2)vscode+EIDE+c/c++插件,导入keil MDK项目的时候没有语法提示问题,导入IAR STM32项目的时候存在语法提示问题。