⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20040326-2.c

📁 linux下编程用 编译软件
💻 C
字号:
/* { dg-options "-O2 -fno-inline-functions" } *//* { dg-do run } *//* Gimplification problem exposed by zsh.  All the side-effects in   function arguments and in the called expression should happen   before the actual function call.  */extern void abort (void);int A;typedef void (*fnptr) (void);fnptr *F;voidfoo (int x){  if (A == x)    abort ();}voidbar (int x, int y){  if (x == 5 || y != 3)    abort ();}voidboz (void){  abort ();}voidbaz (void){  if (*F != boz)    abort ();}fnptr B[2] = { baz, boz };main (){  int b, c;  /* The gimplifier was emitting A++ after the call to foo.  */  A = 5;  foo (A++);  /* The increment to 'b' and 'c' must happen before the call.  However,     the first argument to bar() must be the original value of 'b', while     the second argument must be the new value of 'c'.  */  b = 4;  c = 2;  bar (b++, ++c);  /* This call via function pointer *F should go to baz, but F should     be incremented before the actual call (i.e., right before the     call F should be pointing to boz).  */  F = &B[0];  (*F++) ();  return 0;}

⌨️ 快捷键说明

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