了解更多知识请点我:学习C语言之路(汇总篇)
强烈推荐:宏定义一个好用的printf
定义案例
#define PRINT_INT(i) \
printf("%8s(),%s = 0x%x, %s = 0x%x \n", __FUNCTION__, #i, &(i), #i, i);
参数详细说明
Q:\ 为什么要加这个斜杠
A:\ 相当于下面于下面一行printf…还是在#define后面,(因为代码是一行一样顺序运行下来的)
再来看几个参数
_ FUNCTION _
#i
&(i)
#i
i
- 第一个是什么鬼?额…这个你就记住编译器预定义宏“FUNCTION ”替换代码所在的函数名 举例 比如mian()运行 那么 FUNCTION 相当于main
- #i 这个就更没见过了 ,# 运算符就是将一个带宏的参数转为字符串常量,它使用的条件仅仅出现带参数的宏的替代列表中(说白了就是只能在我上面说的案例中出现)。
- 后面的就不解释了 ,基础知识 -获取地址 -变量
Q:不对 不对 你还没讲前面这些乱七八糟的参数呢 !!!
A: hahaha…
别急。。。。上菜
%8s(),
%s = 0x%x,
%s = 0x%x
还是第一个问题,%8s()是什么鬼 ,后面的8是表示字符小于8位就空格替代,目的是为了对齐。
后面不解释
仿真测试&结果
#include<stdio.h>
#define PRINT_INT(i) \
printf("%8s(),%s = 0x%x, %s = 0x%x \n", __FUNCTION__, #i, &(i), #i, i);
int main(int argc, char *argv[])
{
int iNum1, iNum2, temp;
scanf("%d", &iNum1);
PRINT_INT(iNum1);
return 0;
}