你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

巧用 STM32CubeIDE 之编译警告

[复制链接]
STMCU小助手 发布时间:2023-6-29 22:21
1. 前言
+ L* Z3 V8 x/ r+ g: I- B6 s编译警告对于工程师们来说,是再常见不过的东西了。对于严谨的工程师们,任何 warning 都是不会忽视的。
9 r7 _2 B$ O3 H$ m( |, m4 m2 L3 t! }4 d- i' `0 y9 h
2. 巧妙使用 warning3 T! H) j" V/ m, A
' n7 h) Q8 e& V( ~
在 STM32CubeIDE 中可以通过warning(甚至 error)的方式来通知工程师,使得一些容易遗漏的配置得到重视。
0 i2 b. y/ N6 b1 S; b9 \) e8 Q0 x! w0 w, r( n  u. v( |
例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图 1:
0 W# U' g1 J3 x0 \" W
- ]* F6 _0 a5 ^( s
微信图片_20230629222104.png 8 c; ?2 F( a2 N3 m

0 b/ `% c" H1 ?( C( _! F这样,当客户编译工程时,会出现 error 和 warning,见图 2,只有将“#error”和 “#warning”两行分别注释掉,才会分别消除这两项编译信息,以此达到警示客户的目的。* i3 L# t9 G; A7 g
& n8 Z; n( A4 }
微信图片_20230629222101.png & Z& l, I) f( t

4 D3 o  j  t# _4 z8 I5 T2.1. 主动屏蔽特定的 warning

# Q- s8 v' L; Z7 B5 j5 l# H5 _, V2 ]在有些场景,我们还可以在特定的代码或者文件作用域内,主动屏蔽特定的 warning。
+ T: o5 r0 E" N5 a0 [. V% F2 ]4 t
1 w7 _6 b& _& \# d0 _3 n例如,工程中写了一个测试函数“void MyTestFunction(void)”,但是在工程中暂时没有被调用,直接编译会得到“Wunused-function”的 warning。) T; W: L$ E$ \( `* S/ L% R% I

1 s: P7 R( m  U& w( l+ E, T' G; X  t
但是如果在代码中添加这样的语句:
: s0 j9 N9 h7 l% e! R7 E* y7 Y5 ~
#pragma GCC diagnostic ignored "-Wunused-function"。 ' {$ F( C) B/ q+ @: `$ D
0 q0 r- ?0 j5 c+ h9 H- W

& P9 o0 V( H% b% w3 u2 N/*此区间内,如果出现函数仅申明,但是没有被调用时,编译不产生warning*/ void 5 x, @+ w' t/ W( m$ }* T4 E
MyTestFunction(void)& l$ M: Y" U% q/ S. E9 [2 i
{…}
; `" g( l* {: B# Y: |( G#pragma GCC diagnostic pop
' R2 r! O: a% h. E$ n0 H/ f4 `( B: W8 q1 M
因为我们配置了“-Wunused-function”,那么在编译时,即使 MyTestFunction 没有 被调用,编译也不产生 warning。
) b! U0 ~5 u& ^* |
! f+ S/ D. Z. c' Y' {
我们还可以在 STM32CubeIDE 中,通过“Help”->“Information Center”->“Read STM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 编译器文档,从而发现更多的 warning 选项,根据需要主动屏蔽更多的 warning。见图 3 :
6 r) S+ K5 S- ], |+ U7 o/ e+ L
- j# d. n  U% X6 b+ u# N
微信图片_20230629222058.png
0 w& @4 H3 P1 M- q, Y& f

0 ^3 V. Z& J4 ^9 h5 n$ w6 J7 x3. 小结1 s& I) @$ F, j: V0 ?- A
事实上,在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和 warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙地使用和屏蔽 warning,帮我们更好地管理项目。! V9 {* H) N' _) d+ J
" _! V2 ^& z6 `% e5 L

& P: z' @1 j8 j+ r* @1 Y- \& F+ f6 D7 n
收藏 评论0 发布时间:2023-6-29 22:21

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版