巧用 STM32CubeIDE 之编译警告

发布时间:2024-07-31  

1.前言

编译警告对于工程师们来说,是再常见不过的东西了。对于严谨的工程师们,任何 warning 都是不会忽视的。


2.巧妙使用 warning

在 STM32CubeIDE 中可以通过warning(甚至 error)的方式来通知工程师,使得一些容易遗漏的配置得到重视。

例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图 1:

wKgaomUDw46AInh4AAFWi-zoiSs095.png

这样,当客户编译工程时,会出现 error 和 warning,见图 2,只有将“#error”和 “#warning”两行分别注释掉,才会分别消除这两项编译信息,以此达到警示客户的目的。

wKgaomUDw5CAHuTzAAFiS799EYI093.png

2.1. 主动屏蔽特定的 warning

在有些场景,我们还可以在特定的代码或者文件作用域内,主动屏蔽特定的 warning。

例如,工程中写了一个测试函数“void MyTestFunction(void)”,但是在工程中暂时没有被调用,直接编译会得到“Wunused-function”的 warning。

但是如果在代码中添加这样的语句:

#pragma GCC diagnostic ignored "-Wunused-function"。

/*此区间内,如果出现函数仅申明,但是没有被调用时,编译不产生warning*/ voidMyTestFunction(void){…}

#pragma GCC diagnostic pop

因为我们配置了“-Wunused-function”,那么在编译时,即使 MyTestFunction 没有 被调用,编译也不产生 warning。

我们还可以在 STM32CubeIDE 中,通过“Help”->“Information Center”->“Read STM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 编译器文档,从而发现更多的 warning 选项,根据需要主动屏蔽更多的 warning。见图 3 :

wKgZomUDw5KAH5yjAAK3031kFFI899.png

3. 小结

事实上,在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和 warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙地使用和屏蔽 warning,帮我们更好地管理项目。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    功放aux单声道怎么解决;如果您的功放只支持单声道,但您希望使用aux输入播放双声道音频,您可以尝试以下解决方案: 1. 使用一个Y型转换器将左右声道合并成一个单声道信号,并连......
    学的。 后面深入聊完,我发现他特别爱钻牛角尖,我们在学stm32的时候,一般是基于固件库开发,不需要去深入理解寄存器如何配置。 而他非要去研究,生怕自己研究不透,到时候出了问题不知道怎么解决......
    ()语句。 相关文章:【C语言笔记】assert()怎么用? 预处理指令 1、#error #error......
    题,然后也说一下自己的解决办法,希望对各位兄弟有帮助。 1.程序用keil编译出现错误,不知道怎么解决 有的人编写完程序用keil编译的时候出现了一些错误,不知道怎么去解决。 其实......
    汽车传感器故障怎么解决;  汽车传感器故障怎么解决   汽车传感器故障最常见的两个故障解决办法:   进气压力温度传感器。   损坏现象:   ①ON档,发动机故障灯常亮;   ②原地......
    重新编译程序,这样就可以重新启用了assert()语句。 相关文章:【C语言笔记】assert()怎么用? 预处理指令1、#error #error “Please select first the target......
    开发板在一个一个例子的跑,适当的修改;但是有一天不知道怎么了,他非要把C语言里面的每一个东西研究透,再后来研究来研究去越搞越糊涂,慢慢的就丧失了学习的动力了。说起来有些东西很多大佬也不一定能解释清楚,还有......
    音箱的红外被阻隔后怎么解决;由于酒店的设计原因,导致智能音箱和所控制的设备直接被阻隔,比如:音箱在房间,温控面板在门口。这种情况有两种解决方法。 一。使用红外延长线 这个方案,成本低。但是......
    个 IO 口,那么 STM32F103 芯片怎么解决这个问题的呢?因为 STM32F103 芯片每个 GPIO 端口均有 16 个管脚,因此把每个 端 口 的 16 个 IO 对 应 那 16 根 中......
    伺服系统震动怎么解决?(经典问答之二);十一、伺服电机抖动,怎么办? 伺服电机为珠海运控的,当上方连杆没装上时,一切看起来正常;一旦连杆装上以后,电机就自己左右摇摆,参数设置半天也没整好。注:未接......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>