stm32中一段文字,求解释。。。一定采纳 跪求

#defineassert_param(expr)((expr)?(void)0:assert_failed((uint8_t*)__FILE__,__LINE__))/... #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */
#endif /* __STM32F10x_CONF_H */
==============================
上面的 #define#endif #else等什么意思??? #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__));这句话咋么理解。????
展开
 我来答
硬件开发88
2012-12-13 · TA获得超过8675个赞
知道大有可为答主
回答量:1757
采纳率:84%
帮助的人:594万
展开全部
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))
void assert_failed(u8* file, u32 line); 这句宏定义在STM32所有头文件里面都会出现,这是断言机制。 判定expr是不是0(或者空),如果不为0或空,返回0,;返回失败并找到在哪里定义了,否则执行define assert_param(expr) ((void)0)如果为0或空,那么调用assert_failed函数(应该是终止程序,并打印文件名和行号)__FILE__, __LINE__这两个宏是表示当前所在的文件名和行号。
这样就很好理解了assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。
这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。
这样会在程序的运行上牺牲了效率(但只是在调试阶段),但在项目的开发上却帮助你提高了效率。
这样说应该明白了吧。

#define#endif #else等什么意思???
这句你不懂说明你C语言没有学好,再去多看看C吧。

预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。
关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。就简单说一下(#ifdef,#else,#endif,#if等)以下分3种情况:
1:情况1:
#ifdef _XXXX
...程序段1...
#else
...程序段2...
#endif
ZYG411086604
2012-12-13 · TA获得超过431个赞
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:36万
展开全部
正解。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式