GCC多平台编译会遇到小问题

1、

/root/dev/rinetd/src/stdafx.h:461:28: error: '%d' directive writing between 1 and 11 bytes into a region of size 3 [-Werror=format-overflow=]

461 | sprintf(temp, "%d", source);

| ^~

这个错误是由于在使用 %d 格式化字符串时,写入的字节数超过了目标缓冲区的大小所导致的。编译器检测到这种情况,并将其视为潜在的漏洞,因此将其报告为错误。

要解决这个错误,你可以采取以下几种方式之一:

  1. 检查你的格式化字符串和目标缓冲区的大小是否匹配。确保目标缓冲区足够大以容纳要写入的数据,或者调整格式化字符串以适应目标缓冲区的大小。
  2. 如果你确定目标缓冲区的大小是正确的,并且只想截断输出以适应目标缓冲区,可以考虑使用 %.*d 的格式化字符串,其中 * 是一个占位符,表示要在运行时提供一个整数参数来指定要截断的长度。例如,printf("%.*d", bufferSize, num)

2、

/root/dev/rinetd/src/packet/IPEndPoint.h:484:20: error: implicitly-declared 'constexpr IPEndPoint::IPEndPoint(const IPEndPoint&)' is deprecated [-Werror=deprecated-copy]

484 | return destinationEP;

| ^~~~~~~~~~~~~

这个错误表明在你的代码中使用了被废弃的拷贝构造函数。在 C++11 之后,编译器会自动生成默认的拷贝构造函数,但在某些情况下,这种自动生成的拷贝构造函数可能会导致意外的行为,因此被标记为被废弃的。

暴力的解决方案:

设置编译器选项

bash 复制代码
g++ -Wall -Wextra -Wno-error=deprecated-copy -Wno-error=format-overflow= your_file.cpp -o your_program
相关推荐
qinyia19 小时前
Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
服务器·人工智能·ssh
MilesShi20 小时前
从 scheduler_tick 到上下文切换:深入解析 Linux 内核的 TIF_NEED_RESCHED 标志设置流程
linux·运维·单片机
晓衣1 天前
2025“獬豸杯”全国电子数据取证竞赛-k8s服务器取证wp
服务器·经验分享·程序人生·网络安全·容器·kubernetes·学习方法
我爱云计算1 天前
K8S详解(5万字详细教程)
linux·运维·云原生·容器·kubernetes
li35741 天前
将已有 Vue 项目通过 Electron 打包为桌面客户端的完整步骤
前端·vue.js·electron
Icoolkj1 天前
VuePress 与 VitePress 深度对比:特性、差异与选型指南
前端·javascript·vue.js
excel1 天前
CNN 分层详解:卷积、池化到全连接的作用与原理
前端
excel1 天前
CNN 多层设计详解:从边缘到高级特征的逐层学习
前端
2301_794333911 天前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
西陵1 天前
Nx带来极致的前端开发体验——任务编排
前端·javascript·架构