玩转FPGA山寨版

看了《玩转FPGA》,写的不错,写写山寨版和大家交流!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#include <stdio.h>
#define test(x) test ## x
#define DPRINT( fmt, args...) \
{ 	\
	printf("File : %s Funtion : %s Line : %d  \t", __FILE__, __FUNCTION__, __LINE__ );\
	printf( fmt, ##args );\
}

void test1(int a)
{
	DPRINT("Integer : %d \n", a);
}

void test2(char *s)
{
	DPRINT("String : %s \n", s);
}

int main(void)
{
	test(1)(100);
	test(2)("hello");
	return 0;
}

打印信息:

***************************************************

 File : test.c Funtion : test1 Line : 11         Integer : 100
 File : test.c Funtion : test2 Line : 16         String : hello

***************************************************

 

#define DPRINT( fmt, args...) \
{ \
printf("File : %s Funtion : %s Line : %d  \t", __FILE__, __FUNCTION__, __LINE__ );\
printf( fmt, ##args );\
}

这样定义宏有个问题, 标准printf()函数有返回值, 只是我们很少用

另外一种定义:

#define DPRINT( fmt, args...)     \
  printf("File : %s Funtion : %s Line : %d  \t"fmt, __FILE__, __FUNCTION__, __LINE__ ,##args )

fmt不能为指针

*****************************************

const  char *s= "string";

printf(s);

*****************************************

是合法的,可以打印出string

但DPRINT(s)就不合法

posted on 2012-02-02 10:19  Neddy11  阅读(1686)  评论(0编辑  收藏  举报