当前位置: 首页 > article >正文

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 之后,编译器会自动生成默认的拷贝构造函数,但在某些情况下,这种自动生成的拷贝构造函数可能会导致意外的行为,因此被标记为被废弃的。

暴力的解决方案:

设置编译器选项

g++ -Wall -Wextra -Wno-error=deprecated-copy -Wno-error=format-overflow= your_file.cpp -o your_program


http://www.kler.cn/news/134628.html

相关文章:

  • Codewhisperer 使用评价
  • 机器学习技术栈—— 概率学基础
  • markdown 公式编辑
  • 用户运营:如何搭建用户分析体系
  • 三极管与mos管的区分与应用
  • RT-DETR优化改进:SEAM、MultiSEAM分割物与物相互遮挡、分割小目标性能
  • 零基础安装分布式数据服务注册系统
  • SpringCache
  • 【开源】基于JAVA的校园二手交易系统
  • 微服务和Spring Cloud Alibaba介绍
  • SpringBoot和Spring的区别是什么?
  • AI创作系统ChatGPT网站源码/支持DALL-E3文生图/支持最新GPT-4-Turbo模型+Prompt应用
  • airlearning-ue4安装的踩坑记录
  • 小小发票拦住出海“巨头”,合合信息智能文档处理技术助力企业重塑财务管理流程
  • 第二部分:Module(也称为Package)
  • 属性的加密算法CP-ABE
  • unity-模块卸载重新安装
  • 在QGIS中加载显示3DTiles数据
  • 汇编-loop循环指令
  • html使用天地图写一个地图列表
  • maven打包插件配置模板
  • 汇编-指针
  • npm install 下载不下来依赖解决方案
  • git安装后报git: ‘remote-https‘ is not a git command. See ‘git --help‘.
  • 【Ant Design合集】自用总结
  • IDEA 集成 Docker 插件一键部署 SpringBoot 应用
  • 解决小程序路由超过10层限制
  • 面试题c/c++--语言基础
  • SDL2 播放音频数据(PCM)
  • TP_Link WR886N 硬改闪存16M内存64M,刷入openwrt