c语言assert函数和STM32中的assert_param(expr)

assert函数

assert描述
用于判断一个条件是否成立的函数,在c语言中说的非常详细参考以上转载内容

assert_param(expr)

设计的比较巧妙,用来判断函数是否执行的一条语句,不满足所需的条件不执行,和 a>b?a:b; 语句基本一个思想,注意define其实是替换expr,需要在程序中确保本来就可以执行,并不算设计一个函数。
#define assert_param(expr) ((expr<0) ? (void)0 :fun(expr))

  #include<stdio.h>
  #include<assert.h>
  //通过宏定义的方式来判断是否函数要执行,不符合条件的执行空语句 (void)0 
  #define assert_param(expr) ((expr<0) ? (void)0 :fun(expr))

  void fun(int n);
    int main()
	{
     int a,b;
	scanf("%d",&a);
	scanf("%d",&b);
	//以下两句效果是一样的 
		(a<0) ? (void)0 :fun(a);
		assert_param(b);
		
	printf("你好"); 
    	return 0;
   	}

void fun(int n)
  {
  	printf("%d\n",n);
  }

在这里插入图片描述
在这里插入图片描述

发布了10 篇原创文章 · 获赞 0 · 访问量 455

猜你喜欢

转载自blog.csdn.net/KEY_Init/article/details/103392662