C语言有很多特殊的用法,如果这些特殊用法使用得当,会是你的代码变得更加有健壮,更加容易维护。 比如我们在使用STM32库的断言(assert),你会发现官方提供了包含“__FILE__、__LINE__”的代码。 标准外设库位于stm32fxxx_conf.h文件: HAL使能Assert: 在代码中会看见如下代码: 如果添加了这段断言代码,对于开发大型、复杂的系统,这条语句其实用处很大。每次程序运行错误之后,它会打印程序代码指定的位置,方便我们在庞大的程序中很快找到错误的位置。 我们的系统会随着时间的推移,不断升级更新,也就是需要提交很多版本的可执行文件(hex、bin等)。但是,产品后期使用中,我们对某些设备进行了升级,可能忽略了一些设备(忘记升级),如果出现故障,我们怎样才能很快找到是哪一个版本的软件出现故障呢? 我们的系统会随着时间的推移,不断升级更新,也就是需要提交很多版本的可执行文件(hex、bin等)。但是,产品后期使用中,我们对某些设备进行了升级,可能忽略了一些设备(忘记升级),如果出现故障,我们怎样才能很快找到是哪一个版本的软件出现故障呢? C几种特殊标准定义 1.__FILE__编译文件名称 File中文意思即文件,这里的意思主要是指:正在编译文件对应正在编译文件的路径和文件的名称。 Keil版本对应的路径是相对于工程文件而言的路径,IAR版本路径是相对Windows路径。 源代码: char BuildFile[] = __FILE__; printf('编译文件路径:%s\n', BuildFile); Keil: 编译文件路径:App\main.c IAR: 编译文件路径:C:\Users\strongerHuang\Desktop\工程主目录\App\main.c
char BuildDate[] = __DATE__; printf('编译日期:%s\n', BuildDate);
#ifdef __STDC__ printf('标准C代码文件\n'); #else printf('非标准C代码文件\n'); #endif |
|