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
相关推荐
Zixhy2 小时前
手撕Reactor模型实现同步高并发服务器及Muduo网络库深入解析
linux·服务器·网络·数据库·c++
晴天162 小时前
前端 postMessage 使用场景
前端·javascript·网络
迷途之人不知返2 小时前
【进程】-4-进程状态(2):Linux中的进程状态
linux
zhanghaha13143 小时前
HTML系列教程:15_标签 全称 + 简写 超详细讲解(新手专用)
前端·html
zhanghaha13143 小时前
HTML系列教程:14_HTML 表单与输入框 <form>、<input> 零基础详解
java·前端·javascript
IMPYLH3 小时前
HTML 的 <samp> 元素
前端·网络·html
IMPYLH3 小时前
HTML 的 <script> 元素
前端·html
weixin_493503677 小时前
Vue3 前端生成 PDF:会员证书与活动签到表的三种打印方案与踩坑记录
前端·pdf·状态模式
tedcloud1238 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
Emily1568535987010 小时前
ABB CI867K01 3BSE043660R1
服务器·plc·dcs·abb·ci867k01·3bse043660r1·工控模块