我下载了clangd for vim插件ALU来支持cpp语法自动补全,但是在C++代码中,总是出现如下警告消息:
'new' of type 'Vmux41' with extended alignment 64 [-Waligned-new=]
下面是我的mux数字电路测试平台文件的完整C++代码:
#include "verilated.h"
#include "verilated_vcd_c.h"
#include "../obj_dir/Vmux41.h"
VerilatedContext* contextp = NULL;
VerilatedVcdC* m_trace = NULL;
static Vmux41* dut;
void step_and_dump_wave(){
dut->eval();
contextp->timeInc(1);
m_trace->dump(contextp->time());
}
void sim_init(){
contextp = new VerilatedContext;
m_trace = new VerilatedVcdC;
dut = new Vmux41; // <-- warning happens here
contextp->traceEverOn(true);
dut->trace(m_trace, 0);
m_trace->open("waves/waveform_mux41.vcd");
}
void sim_exit(){
step_and_dump_wave();
m_trace->close();
}
int main() {
sim_init();
...
sim_exit();
}
在函数
sim_init
中,语句dut = new Vmux41;
会得到上面的警告信息,我搜索了一些问题并询问了poe AI。最终答案是当前平台(Ubuntu 22.04)不支持这种对齐要求。
最后,我确认这与我的特定平台相关。所以我不需要解决它,只需隐藏它。
有没有什么方法可以在vim中隐藏这个特定的警告信息。 (其实侧边的警告栏让我很不爽)
ALE 在后台运行多个代码检查器(也称为 linter)。它被关闭,就像您在从命令行运行各个 linter 时关闭它一样。
在你的情况下GCC的-Waligned-new似乎是罪魁祸首,它可以通过传递
-Wno-aligned-new
来关闭。
相应地,添加到您的
vimrc
的行是:
let g:ale_cpp_cc_options = '-Wno-aligned-new'
使用 GCC 进行 linting 时抑制这一警告。