__func__是预置在编译器中的宏,并不包含于任何头文件,所以直接调用即可,不需要做任何其它操作。
创新互联建站2013年开创至今,先为武乡等服务建站,武乡等地企业,进行企业商务咨询服务。为武乡企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
__func__是一个字符串,值为调用__func__函数的函数名。
比如
void test_func(void)
{
printf("%s",__func__);
}
这时的__func__的值就是常量字符串"test_func"。
由于__func__并不是C语言规范中规定的必须宏定义,所以并不是所有编译器都可以支持。当调用__func__编译出错情况下,即为编译器不支持该宏,需要自行修改程序。比如手动在需要的函数入口处定义一个显式的__func__宏。
比如
void test_func(void)
{
#define __func__ "test_func"
printf("%s",__func__);
}
Func 是你自己定义的函数的名字。 例:void func1(int i),其中void指的是返回值类型是空,默认情况下指的是int型,func1是你定义的函数名,int i是你定义一个形式参数,类型是整型的
func不是C语言系统提供的类型,除非用户自定义。例如,如果用户用#define func int定义过,那么func就与int等价,编译时编译器将把代码语句中独立的func全更换为int;如果用户用typedef char* func;定义过,则func是char*的别名,func与char*等价,以后代码中写func pk;则是声明pk为char*型指针。用户自定义情况很多,不可能一一列举。
这个很麻烦,不过不难。每次计算的时候,搞清楚各个值就好了。
首先
func调用两次,参数都是主函数的k和m
这两个值是不变的。也就是说
两次都是func(4,1)
对于func
第一次
a=4
b=1
m=0
i=2
//初始化
i+=m+1
-
i=i+m+1=2+0+1=3
m=i+a+b=3+4+1=8
返回8
于是第一个printf输出8,
第二次
a=4
b=1
m=8
i=3
//这两个变量是static
的,所以第二次进入的时候,m和i都是第一次退出时的值。
i+=m+1
-
i=i+m+1=3+8+1=12
m=i+a+b=12+4+1=17
返回17
于是第二个printf输出17
选A