frame-address.c

来自「linux下编程用 编译软件」· C语言 代码 · 共 44 行

C
44
字号
int check_fa_work (const char *, const char *) __attribute__((noinline));int check_fa_mid (const char *) __attribute__((noinline));int check_fa (char *) __attribute__((noinline));int how_much (void) __attribute__((noinline));int check_fa_work (const char *c, const char *f){  const char d = 0;  if (c >= &d)    return c >= f && f >= &d;  else    return c <= f && f <= &d;}int check_fa_mid (const char *c){  const char *f = __builtin_frame_address (0);  /* Prevent a tail call to check_fa_work, eliding the current stack frame.  */  return check_fa_work (c, f) != 0;}int check_fa (char *unused){  const char c = 0;  return check_fa_mid (&c);}int how_much (void){	return 8;}int main (void){  char *unused = __builtin_alloca (how_much ());  if (!check_fa(unused))    abort();  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?