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

巧用 STM32CubeIDE 之编译警告

[复制链接]
STMCU小助手 发布时间:2023-6-29 22:21
1. 前言+ A9 E2 B4 S3 l2 u! X" N0 Z
编译警告对于工程师们来说,是再常见不过的东西了。对于严谨的工程师们,任何 warning 都是不会忽视的。, y+ ?# C5 e. T, Y

$ Y; s+ K* y6 R8 l  `% c7 |2. 巧妙使用 warning
2 \& b* I7 j7 {/ H* N/ b1 ^2 P
* I6 U. F9 Z& }" b# v
在 STM32CubeIDE 中可以通过warning(甚至 error)的方式来通知工程师,使得一些容易遗漏的配置得到重视。* g2 U" E) o! C. ^4 K
6 s/ |% h4 K7 `' q! K& u8 F) K
例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图 1:, a8 @* _0 D& E8 t! K% n# I

) r) p* q- O$ }
微信图片_20230629222104.png
0 L$ ~+ E: u4 P
9 M4 A5 Y% _) {0 m* u
这样,当客户编译工程时,会出现 error 和 warning,见图 2,只有将“#error”和 “#warning”两行分别注释掉,才会分别消除这两项编译信息,以此达到警示客户的目的。
( b* E, m3 Y/ e7 f- V6 e- Z7 Y, R( \/ L* C
微信图片_20230629222101.png & [" c6 C6 J- P1 m; l9 r
" j9 n8 }: R: H& q0 t
2.1. 主动屏蔽特定的 warning
% K6 K3 S; d& S0 M5 `
在有些场景,我们还可以在特定的代码或者文件作用域内,主动屏蔽特定的 warning。" b* r0 T4 |  v  K
! `: v& ~- W" W' w  h8 v
例如,工程中写了一个测试函数“void MyTestFunction(void)”,但是在工程中暂时没有被调用,直接编译会得到“Wunused-function”的 warning。  H. S9 I: x. w( x% E- A+ D: M

  Y' v2 M2 q. A0 C2 d
但是如果在代码中添加这样的语句: 1 E2 T1 W1 T& H

1 I0 J! C. Y4 ]
#pragma GCC diagnostic ignored "-Wunused-function"。
& j& a1 O: e& i/ L  W8 ^& v) a$ i1 B4 p+ W' y
( M4 x7 e4 [. j' E
/*此区间内,如果出现函数仅申明,但是没有被调用时,编译不产生warning*/ void
, o+ _$ w3 n1 ~% K  G, wMyTestFunction(void)
8 k% b9 V* m/ N9 v" G4 B1 {% e" `{…}
; K1 v0 `" L) @3 i& m( ?/ R9 U/ x3 n#pragma GCC diagnostic pop
# ^0 `9 S3 `$ ~% z/ n' Z: X; h' \: k/ W" Z  p/ p* c
因为我们配置了“-Wunused-function”,那么在编译时,即使 MyTestFunction 没有 被调用,编译也不产生 warning。; K* q+ L  n3 |

" e4 \* e/ q- C; a, l, a) e我们还可以在 STM32CubeIDE 中,通过“Help”->“Information Center”->“Read STM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 编译器文档,从而发现更多的 warning 选项,根据需要主动屏蔽更多的 warning。见图 3 :
9 A' v; Q8 j. t$ X! L5 d" q: |9 B9 L5 X# U) v+ Y( a
微信图片_20230629222058.png 2 s3 v) z3 O1 o* r: v9 N3 h

' l7 ~/ O: a" l; ~) P4 T3. 小结2 P: o) G9 ^1 g4 U, G
事实上,在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和 warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙地使用和屏蔽 warning,帮我们更好地管理项目。
3 s3 @/ L& ^' X1 U  f& z9 w$ T! A
6 e. c6 ?' S0 H

1 K; U* X5 Y  C+ e7 K$ ^! M1 R; P; r/ T# q
收藏 评论0 发布时间:2023-6-29 22:21

举报

0个回答

所属标签

相似技术帖

官网相关资源

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