STMCU小助手
发布时间:2023-2-17 13:14
|
1. 前言 编译警告对于工程师们来说,是再常见不过的了。对于严谨的工程师们来说,任何warning 都是不可忽视的。 9 L5 }5 N* n; o! T+ {$ E$ r 2. 巧妙使用 4 a$ d) t# t# Z warning在 STM32CubeIDE 中,我们可以通过主动 warning(甚至 error)的方式来通知工程师,使得一些容易遗漏的配置得到重视。 " g. n/ U S! C4 e0 Q 例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图 1: % W# b7 d; _9 I) i: i J; L! ]
这样,当客户编译工程时,会出现 error 和 warning,见图 2,只有将“#error”和“#warning”两行分别注释掉,才可以分别消除这两项编译信息,以此达到警示客户的目的。 # W' j4 u6 O( w2 n
2.1. 主动屏蔽特定的 warning # d* W9 A# E, L7 Q+ C) @- z 在有些场景下,我们还可以在特定的代码或者文件作用域内,主动屏蔽特定的warning。 # v( F* ?5 x+ [+ @( |3 q 例如,工程中写了一个测试函数“void MyTestFunction(void)”,但是在工程中暂时没有被调用,直接编译会得到“Wunused-function”的 warning。 # T' f7 v/ s4 o b$ u: b* x 但是如果在代码中添加这样的语句: #pragma GCC diagnostic ignored "-Wunused-function"。 /*此区间内,如果出现函数仅申明,但是没有被调用时,编译不产生warning*/ void MyTestFunction(void)) N# c8 y* C3 c5 O* Y5 G/ S {…} #pragma GCC diagnostic pop 因为我们配置了“-Wunused-function”,那么在编译时,即使 MyTestFunction 没有被调用,编译也不产生 warning。 & i+ }/ C8 b, `* o$ m 我们还可以在 STM32CubeIDE 中,通过“Help”->“Information Center”->“ReadSTM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 编译器文档,从而发现更多的 warning 选项,根据需要主动屏蔽更多的 warning。见图 3 : ( V3 ~2 M* s4 ^2 y q- J& G % Y! i* S# ^: H& H* |% G' r
' [5 P+ m) w% J5 E ; }3 K, s- \) T% t2 N9 ~$ D 3. 小结 2 ^9 G% b5 I( h 事实上,在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙的使用和屏蔽 warning,帮我们更好地管理项目。 完整版请查看:附件
巧用STM32CubeIDE之编译警告.pdf
(248.44 KB, 下载次数: 12)
|
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
《MCUBoot课程》学习笔记+从信任链原理到量产实践
STM32CubeIDE 2.2.0新版本发布
CubeMX生成CubeIDE工程代码乱码
STM32CubeIDE实时时钟(RTC)经验分享
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
【STM32U3 评测】人体行为识别
微信公众号
手机版