公开 版本 1.0

HC32L072 .clangd文件

kuma
kuma
13 次浏览
2025-04-29
描述

基本上解决了所有工程目录内的的报错

提示词内容
###############################################################################
#                            Clangd 诊断抑制配置                              
# 作用:直接控制 clangd 静态分析行为(与编译器无关)                          
###############################################################################
Diagnostics:
  Suppress:
    # === 跨平台兼容性抑制 ===
    - unknown_typename                          # 抑制 ARMCC 专有语法(如 __value_in_regs)的类型名错误
    - nonportable-include-path                  # 抑制头文件大小写警告(Windows 路径不敏感)
    - incompatible_sysroot                      # 抑制ARMCC专用sysroot警告
    - invalid_asm_operand_code                  # 抑制ARM汇编指令校验错误
    - expected_semi_after_top_level_declarator  # 抑制顶层声明后缺少分号警告

    # === 嵌入式开发专用抑制 ===
    - int-to-pointer-cast        # 允许整型转指针(常见于寄存器地址操作)
    - pointer-to-int-cast        # 允许指针转整型(内存地址计算场景)

    # === 工程结构抑制 ===
    - unused-includes            # 抑制未使用头文件警告(兼容多层级头文件包含)
    - pp_including_mainfile_in_preamble # 忽略主文件被包含的警告
    - pp_hash_error              # 抑制因无法识别编译器(如 ARMCC)导致的预处理错误
    - invalid_token_after_toplevel_declarator # 抑制顶层声明符后出现无效标记的错误(兼容 ARMCC 特性)

###############################################################################
#                            Clangd 编译参数配置                              
# 作用:模拟编译器行为,影响代码解析逻辑                                     
###############################################################################
CompileFlags:
  Add:
    # === 包含路径配置 ===
    - "-ID:/keil_v5/ARM/ARMCC/include"      # 添加 Keil 的 include 路径

    # === 错误限制配置 ===
    - "-ferror-limit=0"                     # 禁用错误限制

    # === 警告抑制配置 ===
    # - "-Wno-int-to-pointer-cast"            # 抑制整型转指针警告
    - "-Wno-macro-redefined"                # 抑制宏重定义警告
    # - "-Wno-pointer-to-int-cast"            # 抑制“Cast to smaller integer type”警告

    # === 强制包含配置 ===
    - "-include"                            # 强制在所有文件前包含 FreeRTOS.h
    - "FreeRTOS.h"
  Remove:
    # === 优化控制配置 ===
    - "-fno-tree-switch-conversion"          # 禁用 switch 语句转换为树形结构优化
    - "-fno-shrink-wrap"                     # 禁用 shrink-wrap 优化(不启用局部 prologue/epilogue 放置)
    - "-mlongcalls"                          # 禁用生成长调用序列(使用短调用)

    # === 内存布局与变量优化配置 ===
    - "-mtext-section-literals"              # 禁用将字面量存放在独立文本节中
    - "-fstrict-volatile-bitfields"          # 严格处理 volatile 位字段,防止意外优化

    # === 目标架构配置 ===
    - "-mdisable-hardware-atomics"           # 禁用硬件原子操作支持
    - "-march=rv32imac_zicsr_zifencei"       # 指定目标架构及扩展(RV32IMAC、zicsr、zifencei)

    # === ARMC 标准与接口配置(clangd不支持这里的参数,所以要删除) ===
    - "--cpu=Cortex-M0+"                     # 针对 ARMCC,指定目标 CPU 为 Cortex-M0+
    - "--c99"                                # 针对 ARMCC,启用 C99 标准支持
    - "--split_sections"                     # 针对 ARMCC,启用分割 sections 优化
    - "--apcs=interwork"                     # 针对 ARMCC,启用交叉调用接口模式
    - "--diag_suppress=66,550,1296,1299"     # 针对 ARMCC,抑制诊断警告编号 66, 550, 1296, 1299