p811.c

来自「this is a gcc file, you can download it 」· C语言 代码 · 共 550 行 · 第 1/2 页

C
550
字号
// This test case caused the compiler to abort at one point in time.// Build don't link:// Special g++ Options:// prms-id: 811class ostream; class streambuf;typedef long streamoff, streampos;struct _ios_fields {      streambuf *_strbuf;    ostream* _tie;    int _width;    unsigned long _flags;    char _fill;    unsigned char _state;    unsigned short _precision;};enum state_value { _good = 0, _eof = 1,  _fail = 2, _bad  = 4 };enum open_mode { input=1, output=2, append=8 };class ios : public _ios_fields {  public:    enum io_state { goodbit=0, eofbit=1, failbit=2, badbit=4 };    enum open_mode {	in=1,	out=2,	ate=4,	app=8,	trunc=16,	nocreate=32,	noreplace=64 };    enum seek_dir { beg, cur, end};    enum { skipws=01, left=02, right=04, internal=010,	   dec=020, oct=040, hex=0100,	   showbase=0200, showpoint=0400, uppercase=01000, showpos=02000,	   scientific=04000, fixed=0100000, unitbuf=020000, stdio=040000,	   dont_close=0x80000000  	   };    ostream* tie() const { return _tie; }    ostream* tie(ostream* val) { ostream* save=_tie; _tie=val; return save; }         char fill() const { return _fill; }    char fill(char newf) { char oldf = _fill; _fill = newf; return oldf; }    unsigned long flags() const { return _flags; }    unsigned long flags(unsigned long new_val) {	unsigned long old_val = _flags; _flags = new_val; return old_val; }    unsigned short precision() const { return _precision; }    unsigned short precision(int newp) {	unsigned short oldp = _precision; _precision = (unsigned short)newp;	return oldp; }    unsigned long setf(unsigned long val) {	unsigned long oldbits = _flags;	_flags |= val; return oldbits; }    unsigned long setf(unsigned long val, unsigned long mask) {	unsigned long oldbits = _flags;	_flags = (_flags & ~mask) | (val & mask); return oldbits; }    unsigned long unsetf(unsigned long mask) {	unsigned long oldbits = _flags & mask;	_flags &= ~mask; return oldbits; }    int width() const { return _width; }    int width(long val) { long save = _width; _width = val; return save; }    static const unsigned long basefield;    static const unsigned long adjustfield;    static const unsigned long floatfield;    streambuf* rdbuf() const { return _strbuf; }    void clear(int state = 0) { _state = state; }    int good() const { return _state == 0; }    int eof() const { return _state & ios::eofbit; }    int fail() const { return _state & (ios::badbit|ios::failbit); }    int bad() const { return _state & ios::badbit; }    int rdstate() const { return _state; }    void set(int flag) { _state |= flag; }    operator void*() const { return fail() ? (void*)0 : (void*)this; }    int operator!() const { return fail(); }    void unset(state_value flag) { _state &= ~flag; }    void close();    int is_open();    int readable();    int writable();  protected:    ios(streambuf*sb) { _strbuf=sb; _state=0; _width=0; _fill=' ';			_flags=ios::skipws; _precision=6; }};typedef ios::seek_dir _seek_dir;     //# 168 "/usr/latest/lib/g++-include/streambuf.h" 3struct __streambuf {         int _flags;		     char* _gptr;	     char* _egptr;	     char* _eback;	     char* _pbase;	     char* _pptr;	     char* _epptr;	     char* _base;	     char* _ebuf;	     struct streambuf *_chain;};struct streambuf : private __streambuf {    friend class ios;    friend class istream;    friend class ostream;  protected:    static streambuf* _list_all;      streambuf*& xchain() { return _chain; }    void _un_link();    void _link_in();    char* gptr() const { return _gptr; }    char* pptr() const { return _pptr; }    char* egptr() const { return _egptr; }    char* epptr() const { return _epptr; }    char* pbase() const { return _pbase; }    char* eback() const { return _eback; }    char* ebuf() const { return _ebuf; }    char* base() const { return _base; }    void xput_char(char c) { *_pptr++ = c; }    int xflags() { return _flags; }    int xflags(int f) { int fl = _flags; _flags = f; return fl; }    void xsetflags(int f) { _flags |= f; }    void gbump(int n) { _gptr += n; }    void pbump(int n) { _pptr += n; }    void setb(char* b, char* eb, int a=0);    void setp(char* p, char* ep) { _pbase=_pptr=p; _epptr=ep; }    void setg(char* eb, char* g, char *eg) { _eback=eb; _gptr=g; _egptr=eg; }  public:    static int flush_all();    static void flush_all_linebuffered();      virtual int underflow();      virtual int overflow(int c = (-1) );      virtual int doallocate();    virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);    virtual streampos seekpos(streampos pos, int mode = ios::in|ios::out);    int sputbackc(char c);    int sungetc();    streambuf();    virtual ~streambuf();    int unbuffered() { return _flags & 2  ? 1 : 0; }    int linebuffered() { return _flags & 0x4000  ? 1 : 0; }    void unbuffered(int i)	{ if (i) _flags |= 2 ; else _flags &= ~2 ; }    void linebuffered(int i)	{ if (i) _flags |= 0x4000 ; else _flags &= ~0x4000 ; }    int allocate() {	if (base() || unbuffered()) return 0;	else return doallocate(); }    virtual int sync();    virtual int pbackfail(int c);    virtual int ungetfail();    virtual streambuf* setbuf(char* p, int len);    int in_avail() { return _egptr - _gptr; }    int out_waiting() { return _pptr - _pbase; }    virtual int sputn(const char* s, int n);    virtual int sgetn(char* s, int n);    long sgetline(char* buf, int  n, char delim, int putback_delim);    int sbumpc() {	if (_gptr >= _egptr && underflow() == (-1) ) return (-1) ;	else return *(unsigned char*)_gptr++; }    int sgetc() {	if (_gptr >= _egptr && underflow() == (-1) ) return (-1) ;	else return *(unsigned char*)_gptr; }    int snextc() {	if (++_gptr >= _egptr && underflow() == (-1) ) return (-1) ;	else return *(unsigned char*)_gptr; }    int sputc(int c) {	if (_pptr >= _epptr) return overflow(c);	return *_pptr++ = c, (unsigned char)c; }    int vscan(char const *fmt0, char*  ap);    int vform(char const *fmt0, char*  ap);};struct __file_fields {    char _fake;    char _shortbuf[1];    short _fileno;    int _blksize;    char* _save_gptr;    char* _save_egptr;    long   _offset;};class filebuf : public streambuf {    struct __file_fields _fb;    void init();  public:    filebuf();    filebuf(int fd);    filebuf(int fd, char* p, int len);    ~filebuf();    filebuf* attach(int fd);    filebuf* open(const char *filename, const char *mode);    filebuf* open(const char *filename, int mode, int prot = 0664);    virtual int underflow();    virtual int overflow(int c = (-1) );    int is_open() { return _fb._fileno >= 0; }    int fd() { return is_open() ? _fb._fileno : (-1) ; }    filebuf* close();    virtual int doallocate();    virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);    int sputn(const char* s, int n);    int sgetn(char* s, int n);    virtual int sync();  protected:      virtual int pbackfail(int c);    int is_reading() { return eback() != egptr(); }    char* cur_ptr() { return is_reading() ?  gptr() : pptr(); }         char* file_ptr() { return _fb._save_gptr ? _fb._save_egptr : egptr(); }    int do_flush();         virtual int sys_read(char* buf, int  size);    virtual long   sys_seek(long  , _seek_dir);    virtual long sys_write(const void*, long);    virtual int sys_stat(void*);      virtual int sys_close();};inline int ios::readable() { return rdbuf()->_flags & 4 ; }inline int ios::writable() { return rdbuf()->_flags & 8 ; }inline int ios::is_open() {return rdbuf()->_flags & 4 +8 ;}

⌨️ 快捷键说明

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