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

巧用 STM32CubeIDE 之编译警告

[复制链接]
STMCU小助手 发布时间:2023-2-17 13:14
1. 前言 编译警告对于工程师们来说,是再常见不过的了。对于严谨的工程师们来说,任何warning 都是不可忽视的。
9 @+ l  ^( n! p/ I* r9 L5 }5 N* n; o! T+ {$ E$ r

7 i( `4 g- b) n1 x4 G" G 2. 巧妙使用 4 a$ d) t# t# Z
warning在 STM32CubeIDE 中,我们可以通过主动 warning(甚至 error)的方式来通知工程师,使得一些容易遗漏的配置得到重视。 " g. n/ U  S! C4 e0 Q
例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图 1:
. @$ {* F! l( o6 s
/ Q% D3 X5 Z, i5 U' K" Z1 ~
% W# b7 d; _9 I) i: i  J; L! ]
2O7%{MN8YP~HM](%2OB)]4C.png
. v# m2 h$ U) U# L% p& V5 y. f: R$ o
( ~' b) y1 D( U- w5 ?6 m* w: C7 u. C

1 q- O2 `) A5 a这样,当客户编译工程时,会出现 error 和 warning,见图 2,只有将“#error”和“#warning”两行分别注释掉,才可以分别消除这两项编译信息,以此达到警示客户的目的
' G5 f0 q% r% d
( d- G& x+ H2 w) ~6 {% t  a0 t
# W' j4 u6 O( w2 n
G@M%O%K1VPO3M2@J2RI6P%K.png
" X: g" j$ k" T* u  X" V8 U
$ x9 u7 m1 {/ D/ u% [& H& ~2 m 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
但是如果在代码中添加这样的语句:
4 `7 k* h9 U7 ^  c4 E#pragma GCC diagnostic ignored "-Wunused-function"。
! n0 G$ W8 f$ W) h3 X8 f0 {/*此区间内,如果出现函数仅申明,但是没有被调用时,编译不产生warning*/
. L3 {. E/ i3 b- a1 [1 k& `void MyTestFunction(void)) N# c8 y* C3 c5 O* Y5 G/ S
{…}
) A- E0 r) Q, p4 j* @  q#pragma GCC diagnostic pop
1 n* q# N  z' S* F4 \  N' F因为我们配置了“-Wunused-function”,那么在编译时,即使 MyTestFunction 没有被调用,编译也不产生 warning。 & i+ }/ C8 b, `* o$ m
我们还可以在 STM32CubeIDE 中,通过“Help”->“Information Center”->“ReadSTM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 编译器文档,从而发现更多的 warning 选项,根据需要主动屏蔽更多的 warning。见图 3 :
% T/ V6 v# k7 ]' G( Q( X; P9 H& h, |( V3 ~2 M* s4 ^2 y  q- J& G
% Y! i* S# ^: H& H* |% G' r
{AV[LG]3583$()VA$U}XDPK.png 5 t- t- \5 D" u) a0 _7 d( b/ U
' [5 P+ m) w% J5 E
; }3 K, s- \) T% t2 N9 ~$ D
3. 小结 2 ^9 G% b5 I( h
事实上,在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙的使用和屏蔽 warning,帮我们更好地管理项目。
2 I* |) u* A# R3 Q
# Y5 A8 I- {0 S/ c9 \) x 完整版请查看:附件 巧用STM32CubeIDE之编译警告.pdf (248.44 KB, 下载次数: 12)
收藏 评论0 发布时间:2023-2-17 13:14

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版