fputs.c

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 62 行

C
62
字号
/* Copyright (C) 2000, 2001  Free Software Foundation.   Ensure all expected transformations of builtin fputs occur and that   we honor side effects in the stream argument.   Written by Kaveh R. Ghazi, 10/30/2000.  */#include <stdio.h>extern void abort(void);int i;voidmain_test(void){  FILE *s_array[] = {stdout, NULL}, **s_ptr = s_array;  const char *const s1 = "hello world";    fputs ("", *s_ptr);  fputs ("\n", *s_ptr);  fputs ("bye", *s_ptr);  fputs (s1, *s_ptr);  fputs (s1+5, *s_ptr);  fputs (s1+10, *s_ptr);  fputs (s1+11, *s_ptr);    /* Check side-effects when transforming fputs -> NOP.  */  fputs ("", *s_ptr++);  if (s_ptr != s_array+1 || *s_ptr != 0)    abort();  /* Check side-effects when transforming fputs -> fputc.  */  s_ptr = s_array;  fputs ("\n", *s_ptr++);  if (s_ptr != s_array+1 || *s_ptr != 0)    abort();  /* Check side-effects when transforming fputs -> fwrite.  */  s_ptr = s_array;  fputs ("hello\n", *s_ptr++);  if (s_ptr != s_array+1 || *s_ptr != 0)    abort();  /* Test at least one instance of the __builtin_ style.  We do this     to ensure that it works and that the prototype is correct.  */  s_ptr = s_array;  __builtin_fputs ("", *s_ptr);  /* These builtin stubs are called by __builtin_fputs, ensure their     prototypes are set correctly too.  */  __builtin_fputc ('\n', *s_ptr);  __builtin_fwrite ("hello\n", 1, 6, *s_ptr);  /* Check side-effects in conditional expression.  */  s_ptr = s_array;  fputs (i++ ? "f" : "x", *s_ptr++);  if (s_ptr != s_array+1 || *s_ptr != 0 || i != 1)    abort();  fputs (--i ? "\n" : "\n", *--s_ptr);  if (s_ptr != s_array || i != 0)    abort();}

⌨️ 快捷键说明

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