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

巧用 STM32CubeIDE 之编译警告

[复制链接]
STMCU小助手 发布时间:2023-6-29 22:21
1. 前言
9 S; m0 n: N5 {7 r- z  H编译警告对于工程师们来说,是再常见不过的东西了。对于严谨的工程师们,任何 warning 都是不会忽视的。4 c4 K2 B: r1 e- \. {1 @
3 T8 Z3 l: {9 G# o& [3 R
2. 巧妙使用 warning3 l& o" D6 X, `

  \* S+ k& u. [* `在 STM32CubeIDE 中可以通过warning(甚至 error)的方式来通知工程师,使得一些容易遗漏的配置得到重视。* \4 r- j! Q9 k; T; l

. S5 u2 [" [. X7 C/ j例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图 1:
* f2 {. }4 J7 C3 S' r1 q- H# M! K% O
微信图片_20230629222104.png
- J7 G8 P+ H% A8 E- ]; e7 \" P' ^
! M3 ]/ ~9 [3 U' _  @8 c; X; C  O7 F
这样,当客户编译工程时,会出现 error 和 warning,见图 2,只有将“#error”和 “#warning”两行分别注释掉,才会分别消除这两项编译信息,以此达到警示客户的目的。
/ A  Q# h8 i5 [8 i# z% l% Q( d
8 F& }  F; E& i* Z6 f9 Y 微信图片_20230629222101.png
  H3 O: T& r6 F+ H, d
* o& F5 e% w7 E7 O, ~( |  ^
2.1. 主动屏蔽特定的 warning
  L( \: G3 ~$ v0 ?
在有些场景,我们还可以在特定的代码或者文件作用域内,主动屏蔽特定的 warning。
' \7 k5 _3 Z" n' r/ D  p8 e, [4 Z9 d. t- _. x+ M* {7 ~
例如,工程中写了一个测试函数“void MyTestFunction(void)”,但是在工程中暂时没有被调用,直接编译会得到“Wunused-function”的 warning。
7 k# Y! c9 Z' }) y* u5 g! [
" \8 E" ?) K" z' g
但是如果在代码中添加这样的语句:
1 }( Y" }. u3 X) ^; D( r$ v* y+ K% T3 M6 l3 [/ [
#pragma GCC diagnostic ignored "-Wunused-function"。
: y, H  r0 E0 i0 m" W; r7 n# v/ r2 e! a0 \" W9 B) _

% n+ Z0 x+ X8 S) @/*此区间内,如果出现函数仅申明,但是没有被调用时,编译不产生warning*/ void : s/ M, i% E$ f" W1 L, K
MyTestFunction(void)
& p7 s* l% p5 U' `( u, D{…}
; R& k9 H6 A1 y7 t; }9 X#pragma GCC diagnostic pop
, X1 O0 m5 c$ Y: K3 N1 ]& ]1 }; k" O5 K
# _# S; a  f! R' a, h因为我们配置了“-Wunused-function”,那么在编译时,即使 MyTestFunction 没有 被调用,编译也不产生 warning。* I0 _7 r7 m3 j% b6 o  q

) B1 t' t1 l0 A7 b我们还可以在 STM32CubeIDE 中,通过“Help”->“Information Center”->“Read STM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 编译器文档,从而发现更多的 warning 选项,根据需要主动屏蔽更多的 warning。见图 3 :: ]; D8 U$ v; A5 G2 R
- D' k% B* L8 S
微信图片_20230629222058.png
1 R0 ]4 C# f# {
( \! A% j' q  B5 e  S+ j
3. 小结
. L' }; G7 J. h6 {0 T+ Z事实上,在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和 warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙地使用和屏蔽 warning,帮我们更好地管理项目。7 W) C% b  v$ t

' m7 k" N1 e; w
% _, p* Q% O- x. y" L$ F! r/ V% N
2 r# t+ N! k1 F, |1 Q
赞 收藏 评论0 发布时间:2023-6-29 22:21

举报

0个回答

所属标签

相似技术帖

官网相关资源

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