vscode直接导入工程遇到的语法提示问题(问题窗口有错误)
最近我在使用vscodec/c插件的环境来查看以前同事写的stm32单片机代码使用vscode直接添加文件夹到工作区后在vscode的“问题”窗口中有好多错误并且结构体变量没有语法提示功能更不用说结构体成员变量的语法提示了。通过不断测试最终得出结论语法不提示问题是因为c/c插件遇到了问题解决掉“问题”窗口中的错误后语法提示问题就不存在了。1首先导入文件夹后的现象和问题2解决“问题”窗口中遇到的问题。可以参考我的另外一篇文章https://mp.csdn.net/mp_blog/creation/editor/148357000需要增加“c_cpp_properties.json”的配置文件。问题依旧根据我的文章中内容复制最终的c_cpp_properities.json中的内容不过需要修改部分选项。{ configurations: [ { name: Win32, includePath: [ ${workspaceFolder}/** //D:\\Program Files (x86)\\MDK\\ARM\\ARMCC\\include // 需要添加系统头文件路径 ], defines: [ USE_HAL_DRIVER, // 根据具体情况修改 STM32F103xE, // 根据具体情况修改 __CC_ARM, __arm__, __align(x), __ALIGNOF__(x), __alignof__(x), __asm(x), __forceinline, __restrict, __global_reg(n), __inline, __int64long long, __INTADDR__(expr)0, __irq, __packed, __pure, __smc(n), __svc(n), __svc_indirect(n), __svc_indirect_r7(n), __value_in_regs, __weak, __writeonly, __declspec(x), __attribute__(x), __nonnull__(x), __register, __breakpoint(x), __cdp(x,y,z), __clrex(), __clz(x)0U, __current_pc()0U, __current_sp()0U, __disable_fiq(), __disable_irq(), __dmb(x), __dsb(x), __enable_fiq(), __enable_irq(), __fabs(x)0.0, __fabsf(x)0.0f, __force_loads(), __force_stores(), __isb(x), __ldrex(x)0U, __ldrexd(x)0U, __ldrt(x)0U, __memory_changed(), __nop(), __pld(...), __pli(...), __qadd(x,y)0, __qdbl(x)0, __qsub(x,y)0, __rbit(x)0U, __rev(x)0U, __return_address()0U, __ror(x,y)0U, __schedule_barrier(), __semihost(x,y)0, __sev(), __sqrt(x)0.0, __sqrtf(x)0.0f, __ssat(x,y)0, __strex(x,y)0U, __strexd(x,y)0, __strt(x,y), __swp(x,y)0U, __usat(x,y)0U, __wfe(), __wfi(), __yield(), __vfp_status(x,y)0 ] } ], version: 4 }修改c_cpp_properities.json文件后问题窗口的错误为也就是需要制定stdint.h所在系统路径。如果我们添加的事IAR环境stdint.h头文件所在路径发现问题更多了说明IAR环境中的头文件路径不能使用。换成keil MDK的头文件所在路径问题窗口中的问题消失了并且结构体变量有了语法提示功能。总结1结构体语法不提示问题和vscode的问题窗口存在问题有关只要将“问题”窗口中的错误解决了结构体语法提示问题自然解决了。2IAR环境中头文件路径不能使用需要使用keil MDK环境中头文件所在路径。太坑了{ configurations: [ { name: Win32, includePath: [ ${workspaceFolder}/**, D:\\Program Files (x86)\\MDK\\ARM\\ARMCC\\include // 需要添加keil MDK环境系统头文件路径 ], defines: [ USE_HAL_DRIVER, // 根据具体情况修改 STM32F103xE, // 根据具体情况修改 __CC_ARM, __arm__, __align(x), __ALIGNOF__(x), __alignof__(x), __asm(x), __forceinline, __restrict, __global_reg(n), __inline, __int64long long, __INTADDR__(expr)0, __irq, __packed, __pure, __smc(n), __svc(n), __svc_indirect(n), __svc_indirect_r7(n), __value_in_regs, __weak, __writeonly, __declspec(x), __attribute__(x), __nonnull__(x), __register, __breakpoint(x), __cdp(x,y,z), __clrex(), __clz(x)0U, __current_pc()0U, __current_sp()0U, __disable_fiq(), __disable_irq(), __dmb(x), __dsb(x), __enable_fiq(), __enable_irq(), __fabs(x)0.0, __fabsf(x)0.0f, __force_loads(), __force_stores(), __isb(x), __ldrex(x)0U, __ldrexd(x)0U, __ldrt(x)0U, __memory_changed(), __nop(), __pld(...), __pli(...), __qadd(x,y)0, __qdbl(x)0, __qsub(x,y)0, __rbit(x)0U, __rev(x)0U, __return_address()0U, __ror(x,y)0U, __schedule_barrier(), __semihost(x,y)0, __sev(), __sqrt(x)0.0, __sqrtf(x)0.0f, __ssat(x,y)0, __strex(x,y)0U, __strexd(x,y)0, __strt(x,y), __swp(x,y)0U, __usat(x,y)0U, __wfe(), __wfi(), __yield(), __vfp_status(x,y)0 ] } ], version: 4 }