eeprof-1.c
来自「this is a gcc file, you can download it 」· C语言 代码 · 共 68 行
C
68 行
#define ASSERT(X) if (!(X)) abort ();#define NOCHK __attribute__ ((no_instrument_function))int entry_calls, exit_calls;void (*last_fn_entered)();void (*last_fn_exited)();int main () NOCHK;void foo (){ ASSERT (last_fn_entered == foo);}static void foo2 (){ ASSERT (entry_calls == 1 && exit_calls == 0); ASSERT (last_fn_entered == foo2); foo (); ASSERT (entry_calls == 2 && exit_calls == 1); ASSERT (last_fn_entered == foo); ASSERT (last_fn_exited == foo);}void nfoo (void) NOCHK;void nfoo (){ ASSERT (entry_calls == 2 && exit_calls == 2); ASSERT (last_fn_entered == foo); ASSERT (last_fn_exited == foo2); foo (); ASSERT (entry_calls == 3 && exit_calls == 3); ASSERT (last_fn_entered == foo); ASSERT (last_fn_exited == foo);}int main (){ ASSERT (entry_calls == 0 && exit_calls == 0); foo2 (); ASSERT (entry_calls == 2 && exit_calls == 2); ASSERT (last_fn_entered == foo); ASSERT (last_fn_exited == foo2); nfoo (); ASSERT (entry_calls == 3 && exit_calls == 3); ASSERT (last_fn_entered == foo); return 0;}void __cyg_profile_func_enter (void (*fn)(), void (*parent)()) NOCHK;void __cyg_profile_func_exit (void (*fn)(), void (*parent)()) NOCHK;void __cyg_profile_func_enter (void (*fn)(), void (*parent)()){ entry_calls++; last_fn_entered = fn;}void __cyg_profile_func_exit (void (*fn)(), void (*parent)()){ exit_calls++; last_fn_exited = fn;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?