loop-2e.c

来自「gcc3.2.1源代码」· C语言 代码 · 共 61 行

C
61
字号
#include <limits.h>#ifdef __unix__ /* ??? Is that good enough? */#include <sys/types.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#ifndef MAP_ANON#ifdef MAP_ANONYMOUS#define MAP_ANON MAP_ANONYMOUS#else#define MAP_ANON MAP_FILE#endif#endif#ifndef MAP_FILE#define MAP_FILE 0#endif#ifndef MAP_FIXED#define MAP_FIXED 0#endif#endif#define MAP_START (void *)0x7fff8000#define MAP_LEN 0x10000#define OFFSET (MAP_LEN/2 - 2 * sizeof (int));f (int *p, int **q){  int i;  for (i = 0; i < 40; i++)    {      *q++ = &p[i];    }}main (){#ifdef MAP_ANON  void *p;  int *q[40];  int dev_zero;  dev_zero = open ("/dev/zero", O_RDONLY);  /* -1 is OK when we have MAP_ANON; else mmap will flag an error.  */  if (INT_MAX != 0x7fffffffL || sizeof (char *) != sizeof (int))    exit (0);  p = mmap (MAP_START, MAP_LEN, PROT_READ|PROT_WRITE,	    MAP_ANON|MAP_FIXED|MAP_PRIVATE, dev_zero, 0);  if (p != (void *)-1)    {      p = (char *)p + OFFSET;      q[39] = 0;      f (p, q);      if (q[39] != (int *)p + 39)	abort ();    }#endif  exit (0);}

⌨️ 快捷键说明

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