编写无警告的代码

蓝桥杯基础知识记录 蓝桥杯基础知识记录 规模太大怎么办 对于能够使用公式求和的方式就尽量使用公式(PS:记录我死在了暴力循环求1-n的和上) 保留小数点后x位 //我们需要导入一个库,在()中输入需要保留的位数 #include<iomanip> #include<iostream> int main(){ cout << setiosflags(ios::fixed) &l... 阅读详情

     今天把项目的Qt版本从Qt4.6.3升级到Qt4.8.4,重新编译项目代码的时候,特别关注了一下编译器的警告。于是找到《C++编程规范——101条规则、准则与最佳实践》翻了翻,重温了一下第1条 在高级别警告干净利落地进行编译。
     如果编译器对某个构造发出警告,一般表明代码中存有潜在的问题。警告就好比代码的“肿瘤”,可能是良性的也可能是恶性的——作为代码医生的我们不能对其视而不见。必须“把它弄清楚”,然后通过“改写代码以排除警告”!
  典型的编译器警告示例:
1、"Unused function parameter"(未使用的函数参数):
编译器会对没有使用到的函数参数报告警告。如果确实不需要,那直接删除函数参数名就行了。

2、"Variable defined but never used"(定义了从未使用过的变量):
如果确实不需要,可以直接将之删除。 如果该变量的实例化是为了启动某项服务,则经常可以通过插入一个变量本身的求值表达式,使编译器不再报警。(这种求值不会影响运行时的速度)

3、"Variable may be used without being initialized"(变量使用前可能未经初始化):
这种警告通常意味着你的代码存在问题,请慎重处理之。

4、 "Missing return"(遗漏了return语句)。:
这可能是一种好现象。即使你认为控制永远都不会运行到结尾或某个分支,则应该加上执行assert(false ) 的语句。
像下面这样(兼有注释作用的断言):
 default:  
     assert( !"should never get here!" );  // !"string" 的求值结果为false  

5、"signed/unsigned mismatch"(有符号数/无符号数不匹配):
  通常需要插入一个显式的强制转换。

6、 "warning: type qualifiers ignored on function return type"(忽略了函数返回类型的类型限定符):
通常是因为在函数前面的返回值面前添加了多余的 const 限定符。

例如,const int getAge() const { return m_age; }  ,最前面的const 是多余的,编译器会报告警告。

7、 "warning: deprecated conversion from string constant to 'char*'"(不推荐的转化用法):
 函数原型:void setName(char *name);

 函数调用:setName("personName");  //  编译器报告警告

释义:这是因为 char * 是一个指针,其背后的含义是:给我一个字符串,我可以修改它。

而如果我们传给函数一个“字符串常量”,这应该是没法被修改的。所以说,比较合理的办法是把参数类型修改为const char * ,而这个类型背后的含义是:给我一个字符串,我只要读取它(const意味着只读)。
8、 "warning: "MAX_PATH" redefined" (重复定义) :
    #ifndef MAX_PATH
    #define MAX_PATH(260)
    #endif

9、第三方头文件。

10、"auto-importing has been activated without --enable-auto-import specified on the command line"


       当然,对纯属噪声的警告,如果一时无法提供消除的方法。应该单独禁用这个警告,并且编写一个清晰的注释,说明为什么要禁用。


OpenMediaVault镜像下载全攻略:从官网到镜像站 本文提供了OpenMediaVault镜像下载的完整指南,包括从官网和国内镜像站获取OMV镜像的详细步骤。针对下载速度慢、版本选择困难等常见问题,给出了实用解决方案,帮助用户高效完成镜像下载和验证工作。特别推荐使用清华金枪鱼镜像站加速下载,确保安装过程顺利。 阅读详情

相关推荐

OpenMediaVault插件安装指南与Web控制台密码重置技巧

本文详细介绍了OpenMediaVault(OMV)插件的安装与Web控制台密码重置技巧。首先指导用户通过安装OMV-Extras源解锁丰富插件生态,并推荐了闪存保护、Docker管理、文件浏览器等核心实用插件。针对忘记密码的常见问题,重点讲解了使用内置命令行工具omv-firstaid安全重置Web控制台密码的完整步骤,并分享了密码与插件管理的最佳实践,帮助用户提升NAS管理效率与安全性。

c2d3e4f的博客 591

树莓派3B+安装OpenMediaVault(OMV)后WiFi配置失效的快速修复指南

本文针对树莓派3B+安装OpenMediaVault(OMV)后WiFi配置失效的常见问题,提供了快速修复指南。通过分析问题根源,详细介绍了使用`omv-firstaid`工具修复网络、手动检查配置文件以及安装前使用`-n`参数预防失效的实用方法,帮助用户快速恢复网络连接,确保NAS服务器稳定运行。

weixin_29230805的博客 106

DIY NAS OMV6(OpenMediaVault)教程(1)从零部署:硬件准备与系统盘选择

本文详细介绍了DIY NAS(网络附加存储)的硬件准备与系统盘选择,重点讲解了如何利用闲置设备或选购专用硬件搭建高效NAS系统。通过OpenMediaVault(OMV6)的开源NAS系统,用户可以实现低成本、高性能的私人数据存储方案,同时避免云服务的限制。文章还提供了硬件避坑指南、系统盘选择建议及存储盘配置策略,帮助新手轻松入门。

weixin_27038245的博客 346

警告"warning: type qualifiers ignored on function return type"

我用的时候,使用的是: 定义: const uint16_t getfun(void){int a = 1; return a }; 使用: uint16_t num = getfun(); 这时,会告诉你,类型限定符const,在函数返回时被忽视了。   因为你返回的是一个局部变量的值. 没有使用引用,也没有使用指针,你使用const其实没有意义的。所以编译器自动给你忽略了。 如

xijun的专栏 1万+

OpenMediaVault镜像下载全攻略:从官网到清华镜像站,手把手教你避开SourceForge坑

本文提供OpenMediaVault镜像下载的全面指南,从官网到清华镜像站,详细解析版本选择、官方下载渠道操作及国内镜像站加速方案,特别针对SourceForge平台的常见问题提供解决方案,帮助用户高效获取镜像文件并确保下载安全。

web99的专栏 414

OpenMediaVault手动部署FileBrowser全攻略:从插件失败到完美运行的解决方案

本文详细解析了OpenMediaVault中FileBrowser插件安装失败的原因,并提供了完整的手动部署解决方案。通过SSH登录、目录规划、二进制文件下载、systemd服务配置等核心步骤,指导用户绕过插件问题,实现FileBrowser的稳定运行与权限管理,适用于linux-amd64架构的服务器环境。

weixin_29228203的博客 465

gcc version is very high

when compile android 4.0 , when gcc version 4.6.3 is very high, it will show error message below, It must use gcc version 4.4 . -------------------------------------------------------------------

1537

树莓派NAS搭建后SMB传输速度慢?手把手教你排查Windows 11/10的SMB加密与签名问题

本文详细解析了树莓派4B搭建NAS后SMB传输速度慢的问题,重点针对Windows 11/10的SMB加密与签名设置提供优化方案。通过调整OpenMediaVault配置和Windows安全策略,可显著提升文件传输速度,同时兼顾网络安全性,帮助用户实现高性能家庭NAS解决方案。

weixin_27017211的博客 305

C++常见编译WARNING小结

首先要说的是大家不要对Warning视而不见,有时候通过Warning确实可以找到一些隐患。其次,未来新增代码应不允许Warning出现,有Warning需要修改掉。以下是常见的Warning小结。 常见十大Warning 1.warning: comparison between signed and unsigned integer expressions [-Wsign-compare] 常见错误写法: std::vector<int> photo_id; for (int i

cww_zju_amdocs的专栏 8166

树莓派搭建家用NAS:低成本高性能私有云方案

NAS(网络附加存储)作为集中化数据管理解决方案,通过标准网络协议实现多设备文件共享。其核心技术包括存储池管理、文件系统优化和网络传输协议栈。在智能家居和远程办公场景中,NAS能有效解决数据孤岛问题,而树莓派凭借其低功耗和丰富接口成为理想的DIY平台。以OpenMediaVault系统为例,该开源NAS方案支持Docker容器扩展,配合树莓派4B的USB3.0接口可实现90MB/s传输速度。实测表明,这套总成本不足800元的方案,在千兆网络环境下能达到940Mbps带宽利用率,同时保持5W左右的超低功耗,完

weixin_31476015的博客 330

从零搭建NAS系统:主流操作系统选型与实战部署指南

本文是一份从零搭建NAS系统的实战指南,重点对比了TrueNAS Core、OpenMediaVault、Unraid和Ubuntu Server等主流操作系统的核心特性与适用场景。文章以OpenMediaVault为例,提供了详细的部署步骤与基础服务配置教程,并分享了打造家庭媒体中心、私人云盘等进阶玩法,帮助读者根据自身需求选择并成功部署专属的私人数据管家。

weixin_29264201的博客 623

C语言-2021.9.24

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> //int main() //{ // char arr1[20] = { 0 }; // char arr2[] = "abc"; // strcpy(arr1, arr2); // printf("%s\n", arr1); // // return 0; //} // //// 写一个函数可以找出两个整数中的最大值 //in.

huyongchao666的博客 198

我的NAS搭建心路历程

1.序言 寒假在家闲着无聊就想搭建一个NAS玩玩,之前的认识里NAS就是一个私人云盘,后来发现和云盘还是有很大的区别。NAS可以有两种搭建方法,一种是直接用现成的NAS系统,主要是黑群晖,FreeNAS和OMV三种,还有国产的UNAS,据说是用OMV的系统改的。另一种是在linux系统上搭建,或者干脆就在windows server上开启smb服务就可以,这种方式能实现的功能不多。 2.在手机上尝试 身边苦于没有设备,所以先用我的2+32G备用机实现了一部分NAS功能,参考这篇文章:蜗牛猫盘搞不懂?试试 0

qq_43509788的博客 5243

C++笔记之const限定符

1.const对象一旦创建后,其值就不能在改变,所以const对象必须初始化;2.const的引用把引用绑定到const对象上,就像绑定到其他对象上一样,称为对常量的引用。对常量的引用不能被用作修改它所绑定的对象。下面是C++ primer上的示例:const int ci = 1024; const int &amp;r1 = ci; //正确:引用及其对应的对象都是常量 r1 = 42; //...

u011642644的博客 263

构建2瓦级超低功耗NAS:硬件选型、系统优化与功耗实测指南

网络附加存储(NAS)作为集中化数据管理解决方案,其核心原理是通过网络协议提供文件存储与共享服务。在家庭与小型办公场景中,NAS常需7x24小时运行,功耗与长期电费成为关键考量。通过选用低功耗硬件平台(如Intel低功耗处理器或ARM架构芯片)、搭配固态硬盘(SSD)替代机械硬盘,并利用Linux内核的电源管理特性(如CPU调频、PCIe ASPM),可大幅降低待机功耗。结合OpenMediaVault等轻量化系统与Docker容器化部署,能在保障基础文件服务、数据备份及媒体直播功能的同时,将整机功耗优化至

weixin_30824479的博客 487

树莓派与香橙派对比:从硬件选型到项目实战全解析

单板计算机(SBC)作为集成了处理器、内存和丰富I/O接口的微型计算平台,其核心原理在于通过高度集成的SoC设计,在紧凑的硬件空间内实现完整的计算机功能。这类设备的技术价值在于以极低的成本和功耗,为物联网、边缘计算和嵌入式开发提供了灵活的硬件基础。在应用场景上,SBC广泛适用于智能家居控制、机器人主控、轻量级服务器及AI推理终端。本文聚焦于树莓派与香橙派这两款代表性产品,深入剖析它们在硬件架构、软件生态及扩展性上的差异,并结合NAS搭建、ROS机器人开发等具体项目,提供从系统烧录、环境配置到性能调优的实战指

weixin_30463341的博客 437

GCC编译警告选项的学习

设置QMake中的一些编译选项,帮助调试过程中发现问题。

呓语煮酒的博客 771

FOC电机控制中电流采样延迟补偿的原理和方法

摘要: FOC电机控制中,电流采样、计算与PWM更新存在固有延迟(约1.5个PWM周期),导致相位滞后,限制电流环带宽。主流补偿方法包括: 一阶前向预测法:基于历史电流值预测未来电流,抵消延迟,工程应用广泛; 相位超前补偿:通过s/z域校正器设计实现等效预测; 状态观测器法(如龙伯格观测器):通过电机模型闭环估计状态,兼具噪声抑制和参数辨识能力,但复杂度高。实际需注意参数敏感性、离散化精度及延迟时间校准,避免过补偿风险。一阶预测法因平衡效果与复杂度成为工业首选。

jifengzhiling的博客 2232
上一篇: 《高质量程序设计指南——C/C++》第16章 内存管理
下一篇: 在QtCreator中使用Qwt遇到的几个问题
e5Max
博客等级 码龄14年 145粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值