You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复“format not a string literal and no format arguments”编译错误

问题修复方案

报错原因

-Wformat-security 编译选项会拦截所有将非字面量字符串直接作为格式化类函数(此处的panic属于这类函数)首个格式参数的写法。这种写法存在安全风险:如果info指向的字符串包含%s、%d等格式化占位符,panic会错误读取栈上的额外内存,轻则触发崩溃,重则存在格式化注入攻击风险。

修复方法

将原动态传入格式串的写法调整为固定字面量格式串,把要输出的内容作为格式化参数传递即可,修改后的代码如下:

panic("%s", info == NULL ? "AcpiOsSignal: fatal" : (const char*)info);

该修改完全保留原有逻辑,没有额外性能开销,同时符合编译安全要求。

内容的提问来源于stack exchange,提问作者Alan Shearer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:45:04