2010-05-12 03:42:16 +08:00
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
2010-05-12 05:36:01 +08:00
|
|
|
// The LLVM Compiler Infrastructure
|
2010-05-12 03:42:16 +08:00
|
|
|
//
|
2010-11-17 06:09:02 +08:00
|
|
|
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
|
|
// Source Licenses. See LICENSE.TXT for details.
|
2010-05-12 03:42:16 +08:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
// test <stdio.h>
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <type_traits>
|
2015-07-19 06:51:51 +08:00
|
|
|
#include "test_macros.h"
|
2010-05-12 03:42:16 +08:00
|
|
|
|
2015-10-09 09:29:09 +08:00
|
|
|
#ifdef getc
|
|
|
|
#error getc is defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef putc
|
|
|
|
#error putc is defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef clearerr
|
|
|
|
#error clearerr is defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef feof
|
|
|
|
#error feof is defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef ferror
|
|
|
|
#error ferror is defined
|
|
|
|
#endif
|
|
|
|
|
2010-05-12 03:42:16 +08:00
|
|
|
#ifndef BUFSIZ
|
|
|
|
#error BUFSIZ not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef EOF
|
|
|
|
#error EOF not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef FILENAME_MAX
|
|
|
|
#error FILENAME_MAX not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef FOPEN_MAX
|
|
|
|
#error FOPEN_MAX not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef L_tmpnam
|
|
|
|
#error L_tmpnam not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef NULL
|
|
|
|
#error NULL not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef SEEK_CUR
|
|
|
|
#error SEEK_CUR not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef SEEK_END
|
|
|
|
#error SEEK_END not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef SEEK_SET
|
|
|
|
#error SEEK_SET not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef TMP_MAX
|
|
|
|
#error TMP_MAX not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _IOFBF
|
|
|
|
#error _IOFBF not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _IOLBF
|
|
|
|
#error _IOLBF not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _IONBF
|
|
|
|
#error _IONBF not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef stderr
|
|
|
|
#error stderr not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef stdin
|
|
|
|
#error stdin not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef stdout
|
|
|
|
#error stdout not defined
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <cstdarg>
|
|
|
|
|
2017-02-19 03:28:41 +08:00
|
|
|
#if defined(__GNUC__) || defined(__clang__)
|
2015-07-19 06:51:51 +08:00
|
|
|
#pragma GCC diagnostic ignored "-Wformat-zero-length"
|
|
|
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // for tmpnam
|
2016-04-28 09:49:03 +08:00
|
|
|
#endif
|
2012-02-26 04:04:11 +08:00
|
|
|
|
2010-05-12 03:42:16 +08:00
|
|
|
int main()
|
|
|
|
{
|
|
|
|
FILE* fp = 0;
|
2017-03-04 01:24:29 +08:00
|
|
|
fpos_t fpos = fpos_t();
|
2016-05-03 03:15:48 +08:00
|
|
|
size_t s = 0;
|
2010-05-12 03:42:16 +08:00
|
|
|
char* cp = 0;
|
2015-07-19 06:51:51 +08:00
|
|
|
char arr[] = {'a', 'b'};
|
2010-05-12 03:42:16 +08:00
|
|
|
va_list va;
|
2016-05-03 03:15:48 +08:00
|
|
|
((void)fp); // Prevent unused warning
|
|
|
|
((void)fpos); // Prevent unused warning
|
|
|
|
((void)s); // Prevent unused warning
|
|
|
|
((void)cp); // Prevent unused warning
|
|
|
|
((void)arr); // Prevent unused warning
|
|
|
|
((void)va); // Prevent unused warning
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(remove("")), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(rename("","")), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(tmpfile()), FILE*>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(tmpnam(cp)), char*>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fclose(fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fflush(fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fopen("", "")), FILE*>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(freopen("", "", fp)), FILE*>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(setbuf(fp,cp)), void>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(vfprintf(fp,"",va)), int>::value), "");
|
2011-05-14 05:52:40 +08:00
|
|
|
static_assert((std::is_same<decltype(fprintf(fp," ")), int>::value), "");
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(fscanf(fp,"")), int>::value), "");
|
2011-05-14 05:52:40 +08:00
|
|
|
static_assert((std::is_same<decltype(printf("\n")), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(scanf("\n")), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(snprintf(cp,0,"p")), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(sprintf(cp," ")), int>::value), "");
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(sscanf("","")), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(vfprintf(fp,"",va)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(vfscanf(fp,"",va)), int>::value), "");
|
2011-05-14 05:52:40 +08:00
|
|
|
static_assert((std::is_same<decltype(vprintf(" ",va)), int>::value), "");
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(vscanf("",va)), int>::value), "");
|
2011-05-14 05:52:40 +08:00
|
|
|
static_assert((std::is_same<decltype(vsnprintf(cp,0," ",va)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(vsprintf(cp," ",va)), int>::value), "");
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(vsscanf("","",va)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fgetc(fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fgets(cp,0,fp)), char*>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fputc(0,fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fputs("",fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(getc(fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(getchar()), int>::value), "");
|
2015-07-19 06:51:51 +08:00
|
|
|
#if TEST_STD_VER < 14
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(gets(cp)), char*>::value), "");
|
2014-08-11 06:39:11 +08:00
|
|
|
#endif
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(putc(0,fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(putchar(0)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(puts("")), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(ungetc(0,fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fread((void*)0,0,0,fp)), size_t>::value), "");
|
2015-07-19 06:51:51 +08:00
|
|
|
static_assert((std::is_same<decltype(fwrite((const void*)arr,1,0,fp)), size_t>::value), "");
|
2010-05-12 03:42:16 +08:00
|
|
|
static_assert((std::is_same<decltype(fgetpos(fp, &fpos)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fseek(fp, 0,0)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(fsetpos(fp, &fpos)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(ftell(fp)), long>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(rewind(fp)), void>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(clearerr(fp)), void>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(feof(fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(ferror(fp)), int>::value), "");
|
|
|
|
static_assert((std::is_same<decltype(perror("")), void>::value), "");
|
|
|
|
}
|