本文主要是介绍一段奇妙的C语言代码的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看gdb源码的时候无意发现一个奇怪的写法, 仔细查看了之后明白了其中的秘密
fun()->mem1 = xx;
fun()->mem2(4);
这是我实现的一个代码:
#include <stdio.h>
#include <stdlib.h>typedef int (*print_fun_t)(const char *, ...);struct inferior
{int attach_flag;print_fun_t print;
};/* The Current Inferior. */
static struct inferior *current_inferior_ = NULL;struct inferior*
current_inferior (void)
{return current_inferior_;
}void
set_current_inferior (struct inferior *inf)
{current_inferior_ = inf;
}int main()
{struct inferior *inf;inf = (struct inferior *)malloc(sizeof(struct inferior));inf->print = printf;set_current_inferior(inf);current_inferior()->attach_flag = 10;current_inferior()->print("my attach_flag: %d\n", current_inferior()->attach_flag);return 0;
}
这篇关于一段奇妙的C语言代码的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!