Linux神器——gcc/g++
admin
2024-04-27 18:18:28
0

目录

一、程序(文本)——>机器语言(二进制)过程:

二、过程

三、附加功能


一、程序(文本)——>机器语言(二进制)过程:

预处理:头文件展开、去注释、宏替换、条件编译

编译:把C变成汇编语言

汇编:把汇编变成二进制

链接:把你写的代码和C标准库中的代码合起来

二、过程

    };templateinline booloperator==(const istreambuf_iterator<_CharT, _Traits>& __a,const istreambuf_iterator<_CharT, _Traits>& __b){ return __a.equal(__b); }templateinline booloperator!=(const istreambuf_iterator<_CharT, _Traits>& __a,const istreambuf_iterator<_CharT, _Traits>& __b){ return !__a.equal(__b); }templateclass ostreambuf_iterator: public iterator{public:typedef _CharT char_type;typedef _Traits traits_type;typedef basic_streambuf<_CharT, _Traits> streambuf_type;typedef basic_ostream<_CharT, _Traits> ostream_type;templatefriend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,ostreambuf_iterator<_CharT2> >::__typecopy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,ostreambuf_iterator<_CharT2>);private:streambuf_type* _M_sbuf;bool _M_failed;public:ostreambuf_iterator(ostream_type& __s) throw(): _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }ostreambuf_iterator(streambuf_type* __s) throw(): _M_sbuf(__s), _M_failed(!_M_sbuf) { }ostreambuf_iterator&operator=(_CharT __c){if (!_M_failed &&_Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))_M_failed = true;return *this;}ostreambuf_iterator&operator*(){ return *this; }ostreambuf_iterator&operator++(int){ return *this; }ostreambuf_iterator&operator++(){ return *this; }boolfailed() const throw(){ return _M_failed; }ostreambuf_iterator&_M_put(const _CharT* __ws, streamsize __len){if (__builtin_expect(!_M_failed, true)&& __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,false))_M_failed = true;return *this;}};templatetypename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,ostreambuf_iterator<_CharT> >::__typecopy(istreambuf_iterator<_CharT> __first,istreambuf_iterator<_CharT> __last,ostreambuf_iterator<_CharT> __result){if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed){bool __ineof;__copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);if (!__ineof)__result._M_failed = true;}return __result;}templatetypename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,ostreambuf_iterator<_CharT> >::__type__copy_move_a2(_CharT* __first, _CharT* __last,ostreambuf_iterator<_CharT> __result){const streamsize __num = __last - __first;if (__num > 0)__result._M_put(__first, __num);return __result;}templatetypename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,ostreambuf_iterator<_CharT> >::__type__copy_move_a2(const _CharT* __first, const _CharT* __last,ostreambuf_iterator<_CharT> __result){const streamsize __num = __last - __first;if (__num > 0)__result._M_put(__first, __num);return __result;}templatetypename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,_CharT*>::__type__copy_move_a2(istreambuf_iterator<_CharT> __first,istreambuf_iterator<_CharT> __last, _CharT* __result){typedef istreambuf_iterator<_CharT> __is_iterator_type;typedef typename __is_iterator_type::traits_type traits_type;typedef typename __is_iterator_type::streambuf_type streambuf_type;typedef typename traits_type::int_type int_type;if (__first._M_sbuf && !__last._M_sbuf){streambuf_type* __sb = __first._M_sbuf;int_type __c = __sb->sgetc();while (!traits_type::eq_int_type(__c, traits_type::eof())){const streamsize __n = __sb->egptr() - __sb->gptr();if (__n > 1){traits_type::copy(__result, __sb->gptr(), __n);__sb->__safe_gbump(__n);__result += __n;__c = __sb->underflow();}else{*__result++ = traits_type::to_char_type(__c);__c = __sb->snextc();}}}return __result;}templatetypename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,istreambuf_iterator<_CharT> >::__typefind(istreambuf_iterator<_CharT> __first,istreambuf_iterator<_CharT> __last, const _CharT& __val){typedef istreambuf_iterator<_CharT> __is_iterator_type;typedef typename __is_iterator_type::traits_type traits_type;typedef typename __is_iterator_type::streambuf_type streambuf_type;typedef typename traits_type::int_type int_type;if (__first._M_sbuf && !__last._M_sbuf){const int_type __ival = traits_type::to_int_type(__val);streambuf_type* __sb = __first._M_sbuf;int_type __c = __sb->sgetc();while (!traits_type::eq_int_type(__c, traits_type::eof())&& !traits_type::eq_int_type(__c, __ival)){streamsize __n = __sb->egptr() - __sb->gptr();if (__n > 1){const _CharT* __p = traits_type::find(__sb->gptr(),__n, __val);if (__p)__n = __p - __sb->gptr();__sb->__safe_gbump(__n);__c = __sb->sgetc();}else__c = __sb->snextc();}if (!traits_type::eq_int_type(__c, traits_type::eof()))__first._M_c = __c;else__first._M_sbuf = 0;}return __first;}}
# 49 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3namespace std __attribute__ ((__visibility__ ("default")))
{# 64 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3templatevoid__convert_to_v(const char*, _Tp&, ios_base::iostate&,const __c_locale&) throw();template<>void__convert_to_v(const char*, float&, ios_base::iostate&,const __c_locale&) throw();template<>void__convert_to_v(const char*, double&, ios_base::iostate&,const __c_locale&) throw();template<>void__convert_to_v(const char*, long double&, ios_base::iostate&,const __c_locale&) throw();templatestruct __pad{static void_S_pad(ios_base& __io, _CharT __fill, _CharT* __news,const _CharT* __olds, streamsize __newlen, streamsize __oldlen);};template_CharT*__add_grouping(_CharT* __s, _CharT __sep,const char* __gbeg, size_t __gsize,const _CharT* __first, const _CharT* __last);templateinlineostreambuf_iterator<_CharT>__write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len){__s._M_put(__ws, __len);return __s;}templateinline_OutIter__write(_OutIter __s, const _CharT* __ws, int __len){for (int __j = 0; __j < __len; __j++, ++__s)*__s = __ws[__j];return __s;}
# 142 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3templateclass __ctype_abstract_base : public locale::facet, public ctype_base{public:typedef _CharT char_type;
# 161 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3boolis(mask __m, char_type __c) const{ return this->do_is(__m, __c); }
# 178 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*is(const char_type *__lo, const char_type *__hi, mask *__vec) const{ return this->do_is(__lo, __hi, __vec); }
# 194 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*scan_is(mask __m, const char_type* __lo, const char_type* __hi) const{ return this->do_scan_is(__m, __lo, __hi); }
# 210 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*scan_not(mask __m, const char_type* __lo, const char_type* __hi) const{ return this->do_scan_not(__m, __lo, __hi); }
# 224 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typetoupper(char_type __c) const{ return this->do_toupper(__c); }
# 239 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*toupper(char_type *__lo, const char_type* __hi) const{ return this->do_toupper(__lo, __hi); }
# 253 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typetolower(char_type __c) const{ return this->do_tolower(__c); }
# 268 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*tolower(char_type* __lo, const char_type* __hi) const{ return this->do_tolower(__lo, __hi); }
# 285 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typewiden(char __c) const{ return this->do_widen(__c); }
# 304 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char*widen(const char* __lo, const char* __hi, char_type* __to) const{ return this->do_widen(__lo, __hi, __to); }
# 323 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3charnarrow(char_type __c, char __dfault) const{ return this->do_narrow(__c, __dfault); }
# 345 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*narrow(const char_type* __lo, const char_type* __hi,char __dfault, char* __to) const{ return this->do_narrow(__lo, __hi, __dfault, __to); }protected:explicit__ctype_abstract_base(size_t __refs = 0): facet(__refs) { }virtual~__ctype_abstract_base() { }
# 370 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual booldo_is(mask __m, char_type __c) const = 0;
# 389 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_is(const char_type* __lo, const char_type* __hi,mask* __vec) const = 0;
# 408 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_scan_is(mask __m, const char_type* __lo,const char_type* __hi) const = 0;
# 427 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_scan_not(mask __m, const char_type* __lo,const char_type* __hi) const = 0;
# 445 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_toupper(char_type __c) const = 0;
# 462 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_toupper(char_type* __lo, const char_type* __hi) const = 0;
# 478 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_tolower(char_type __c) const = 0;
# 495 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_tolower(char_type* __lo, const char_type* __hi) const = 0;
# 514 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_widen(char __c) const = 0;
# 535 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char*do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0;
# 556 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual chardo_narrow(char_type __c, char __dfault) const = 0;
# 581 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_narrow(const char_type* __lo, const char_type* __hi,char __dfault, char* __to) const = 0;};
# 604 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3templateclass ctype : public __ctype_abstract_base<_CharT>{public:typedef _CharT char_type;typedef typename __ctype_abstract_base<_CharT>::mask mask;static locale::id id;explicitctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }protected:virtual~ctype();virtual booldo_is(mask __m, char_type __c) const;virtual const char_type*do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;virtual const char_type*do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;virtual const char_type*do_scan_not(mask __m, const char_type* __lo,const char_type* __hi) const;virtual char_typedo_toupper(char_type __c) const;virtual const char_type*do_toupper(char_type* __lo, const char_type* __hi) const;virtual char_typedo_tolower(char_type __c) const;virtual const char_type*do_tolower(char_type* __lo, const char_type* __hi) const;virtual char_typedo_widen(char __c) const;virtual const char*do_widen(const char* __lo, const char* __hi, char_type* __dest) const;virtual chardo_narrow(char_type, char __dfault) const;virtual const char_type*do_narrow(const char_type* __lo, const char_type* __hi,char __dfault, char* __to) const;};templatelocale::id ctype<_CharT>::id;
# 673 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3template<>class ctype : public locale::facet, public ctype_base{public:typedef char char_type;protected:__c_locale _M_c_locale_ctype;bool _M_del;__to_type _M_toupper;__to_type _M_tolower;const mask* _M_table;mutable char _M_widen_ok;mutable char _M_widen[1 + static_cast(-1)];mutable char _M_narrow[1 + static_cast(-1)];mutable char _M_narrow_ok;public:static locale::id id;static const size_t table_size = 1 + static_cast(-1);
# 710 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
# 723 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,size_t __refs = 0);
# 736 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3inline boolis(mask __m, char __c) const;
# 751 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3inline const char*is(const char* __lo, const char* __hi, mask* __vec) const;
# 765 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3inline const char*scan_is(mask __m, const char* __lo, const char* __hi) const;
# 779 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3inline const char*scan_not(mask __m, const char* __lo, const char* __hi) const;
# 794 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typetoupper(char_type __c) const{ return this->do_toupper(__c); }
# 811 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*toupper(char_type *__lo, const char_type* __hi) const{ return this->do_toupper(__lo, __hi); }
# 827 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typetolower(char_type __c) const{ return this->do_tolower(__c); }
# 844 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*tolower(char_type* __lo, const char_type* __hi) const{ return this->do_tolower(__lo, __hi); }
# 864 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typewiden(char __c) const{if (_M_widen_ok)return _M_widen[static_cast(__c)];this->_M_widen_init();return this->do_widen(__c);}
# 891 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char*widen(const char* __lo, const char* __hi, char_type* __to) const{if (_M_widen_ok == 1){__builtin_memcpy(__to, __lo, __hi - __lo);return __hi;}if (!_M_widen_ok)_M_widen_init();return this->do_widen(__lo, __hi, __to);}
# 922 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3charnarrow(char_type __c, char __dfault) const{if (_M_narrow[static_cast(__c)])return _M_narrow[static_cast(__c)];const char __t = do_narrow(__c, __dfault);if (__t != __dfault)_M_narrow[static_cast(__c)] = __t;return __t;}
# 955 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3const char_type*narrow(const char_type* __lo, const char_type* __hi,char __dfault, char* __to) const{if (__builtin_expect(_M_narrow_ok == 1, true)){__builtin_memcpy(__to, __lo, __hi - __lo);return __hi;}if (!_M_narrow_ok)_M_narrow_init();return this->do_narrow(__lo, __hi, __dfault, __to);}const mask*table() const throw(){ return _M_table; }static const mask*classic_table() throw();protected:virtual~ctype();
# 1004 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_toupper(char_type __c) const;
# 1021 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_toupper(char_type* __lo, const char_type* __hi) const;
# 1037 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_tolower(char_type __c) const;
# 1054 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_tolower(char_type* __lo, const char_type* __hi) const;
# 1074 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_widen(char __c) const{ return __c; }
# 1097 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char*do_widen(const char* __lo, const char* __hi, char_type* __to) const{__builtin_memcpy(__to, __lo, __hi - __lo);return __hi;}
# 1123 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual chardo_narrow(char_type __c, char __dfault) const{ return __c; }
# 1149 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_narrow(const char_type* __lo, const char_type* __hi,char __dfault, char* __to) const{__builtin_memcpy(__to, __lo, __hi - __lo);return __hi;}private:void _M_narrow_init() const;void _M_widen_init() const;};
# 1174 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3template<>class ctype : public __ctype_abstract_base{public:typedef wchar_t char_type;typedef wctype_t __wmask_type;protected:__c_locale _M_c_locale_ctype;bool _M_narrow_ok;char _M_narrow[128];wint_t _M_widen[1 + static_cast(-1)];mask _M_bit[16];__wmask_type _M_wmask[16];public:static locale::id id;
# 1207 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitctype(size_t __refs = 0);
# 1218 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitctype(__c_locale __cloc, size_t __refs = 0);protected:__wmask_type_M_convert_to_wmask(const mask __m) const throw();virtual~ctype();
# 1242 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual booldo_is(mask __m, char_type __c) const;
# 1261 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
# 1279 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
# 1297 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_scan_not(mask __m, const char_type* __lo,const char_type* __hi) const;
# 1314 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_toupper(char_type __c) const;
# 1331 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_toupper(char_type* __lo, const char_type* __hi) const;
# 1347 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_tolower(char_type __c) const;
# 1364 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_tolower(char_type* __lo, const char_type* __hi) const;
# 1384 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_widen(char __c) const;
# 1406 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char*do_widen(const char* __lo, const char* __hi, char_type* __to) const;
# 1429 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual chardo_narrow(char_type __c, char __dfault) const;
# 1455 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual const char_type*do_narrow(const char_type* __lo, const char_type* __hi,char __dfault, char* __to) const;void_M_initialize_ctype() throw();};templateclass ctype_byname : public ctype<_CharT>{public:typedef typename ctype<_CharT>::mask mask;explicitctype_byname(const char* __s, size_t __refs = 0);protected:virtual~ctype_byname() { };};template<>class ctype_byname : public ctype{public:explicitctype_byname(const char* __s, size_t __refs = 0);protected:virtual~ctype_byname();};template<>class ctype_byname : public ctype{public:explicitctype_byname(const char* __s, size_t __refs = 0);protected:virtual~ctype_byname();};}# 1 "/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/ctype_inline.h" 1 3
# 37 "/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/ctype_inline.h" 3
namespace std __attribute__ ((__visibility__ ("default")))
{boolctype::is(mask __m, char __c) const{ return _M_table[static_cast(__c)] & __m; }const char*ctype::is(const char* __low, const char* __high, mask* __vec) const{while (__low < __high)*__vec++ = _M_table[static_cast(*__low++)];return __high;}const char*ctype::scan_is(mask __m, const char* __low, const char* __high) const{while (__low < __high&& !(_M_table[static_cast(*__low)] & __m))++__low;return __low;}const char*ctype::scan_not(mask __m, const char* __low, const char* __high) const{while (__low < __high&& (_M_table[static_cast(*__low)] & __m) != 0)++__low;return __low;}}
# 1512 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3namespace std __attribute__ ((__visibility__ ("default")))
{class __num_base{public:enum{_S_ominus,_S_oplus,_S_ox,_S_oX,_S_odigits,_S_odigits_end = _S_odigits + 16,_S_oudigits = _S_odigits_end,_S_oudigits_end = _S_oudigits + 16,_S_oe = _S_odigits + 14,_S_oE = _S_oudigits + 14,_S_oend = _S_oudigits_end};static const char* _S_atoms_out;static const char* _S_atoms_in;enum{_S_iminus,_S_iplus,_S_ix,_S_iX,_S_izero,_S_ie = _S_izero + 14,_S_iE = _S_izero + 20,_S_iend = 26};static void_S_format_float(const ios_base& __io, char* __fptr, char __mod) throw();};templatestruct __numpunct_cache : public locale::facet{const char* _M_grouping;size_t _M_grouping_size;bool _M_use_grouping;const _CharT* _M_truename;size_t _M_truename_size;const _CharT* _M_falsename;size_t _M_falsename_size;_CharT _M_decimal_point;_CharT _M_thousands_sep;_CharT _M_atoms_out[__num_base::_S_oend];_CharT _M_atoms_in[__num_base::_S_iend];bool _M_allocated;__numpunct_cache(size_t __refs = 0): facet(__refs), _M_grouping(0), _M_grouping_size(0),_M_use_grouping(false),_M_truename(0), _M_truename_size(0), _M_falsename(0),_M_falsename_size(0), _M_decimal_point(_CharT()),_M_thousands_sep(_CharT()), _M_allocated(false){ }~__numpunct_cache();void_M_cache(const locale& __loc);private:__numpunct_cache&operator=(const __numpunct_cache&);explicit__numpunct_cache(const __numpunct_cache&);};template__numpunct_cache<_CharT>::~__numpunct_cache(){if (_M_allocated){delete [] _M_grouping;delete [] _M_truename;delete [] _M_falsename;}}
# 1640 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3templateclass numpunct : public locale::facet{public:typedef _CharT char_type;typedef basic_string<_CharT> string_type;typedef __numpunct_cache<_CharT> __cache_type;protected:__cache_type* _M_data;public:static locale::id id;explicitnumpunct(size_t __refs = 0): facet(__refs), _M_data(0){ _M_initialize_numpunct(); }
# 1678 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitnumpunct(__cache_type* __cache, size_t __refs = 0): facet(__refs), _M_data(__cache){ _M_initialize_numpunct(); }
# 1692 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitnumpunct(__c_locale __cloc, size_t __refs = 0): facet(__refs), _M_data(0){ _M_initialize_numpunct(__cloc); }
# 1706 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typedecimal_point() const{ return this->do_decimal_point(); }
# 1719 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3char_typethousands_sep() const{ return this->do_thousands_sep(); }
# 1750 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3stringgrouping() const{ return this->do_grouping(); }
# 1763 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3string_typetruename() const{ return this->do_truename(); }
# 1776 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3string_typefalsename() const{ return this->do_falsename(); }protected:virtual~numpunct();
# 1793 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_decimal_point() const{ return _M_data->_M_decimal_point; }
# 1805 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual char_typedo_thousands_sep() const{ return _M_data->_M_thousands_sep; }
# 1818 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual stringdo_grouping() const{ return _M_data->_M_grouping; }
# 1831 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual string_typedo_truename() const{ return _M_data->_M_truename; }
# 1844 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual string_typedo_falsename() const{ return _M_data->_M_falsename; }void_M_initialize_numpunct(__c_locale __cloc = 0);};templatelocale::id numpunct<_CharT>::id;template<>numpunct::~numpunct();template<>voidnumpunct::_M_initialize_numpunct(__c_locale __cloc);template<>numpunct::~numpunct();template<>voidnumpunct::_M_initialize_numpunct(__c_locale __cloc);templateclass numpunct_byname : public numpunct<_CharT>{public:typedef _CharT char_type;typedef basic_string<_CharT> string_type;explicitnumpunct_byname(const char* __s, size_t __refs = 0): numpunct<_CharT>(__refs){if (__builtin_strcmp(__s, "C") != 0&& __builtin_strcmp(__s, "POSIX") != 0){__c_locale __tmp;this->_S_create_c_locale(__tmp, __s);this->_M_initialize_numpunct(__tmp);this->_S_destroy_c_locale(__tmp);}}protected:virtual~numpunct_byname() { }};# 1914 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3templateclass num_get : public locale::facet{public:typedef _CharT char_type;typedef _InIter iter_type;static locale::id id;
# 1935 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitnum_get(size_t __refs = 0) : facet(__refs) { }
# 1961 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, bool& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }
# 1998 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, long& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned short& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned int& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned long& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, long long& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned long long& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }
# 2058 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, float& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, double& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, long double& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }
# 2101 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeget(iter_type __in, iter_type __end, ios_base& __io,ios_base::iostate& __err, void*& __v) const{ return this->do_get(__in, __end, __io, __err, __v); }protected:virtual ~num_get() { }iter_type_M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,string&) const;templateiter_type_M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,_ValueT&) const;templatetypename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type_M_find(const _CharT2*, size_t __len, _CharT2 __c) const{int __ret = -1;if (__len <= 10){if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))__ret = __c - _CharT2('0');}else{if (__c >= _CharT2('0') && __c <= _CharT2('9'))__ret = __c - _CharT2('0');else if (__c >= _CharT2('a') && __c <= _CharT2('f'))__ret = 10 + (__c - _CharT2('a'));else if (__c >= _CharT2('A') && __c <= _CharT2('F'))__ret = 10 + (__c - _CharT2('A'));}return __ret;}templatetypename __gnu_cxx::__enable_if::__value,int>::__type_M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const{int __ret = -1;const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);if (__q){__ret = __q - __zero;if (__ret > 15)__ret -= 6;}return __ret;}
# 2172 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual iter_typedo_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;virtual iter_typedo_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, long& __v) const{ return _M_extract_int(__beg, __end, __io, __err, __v); }virtual iter_typedo_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned short& __v) const{ return _M_extract_int(__beg, __end, __io, __err, __v); }virtual iter_typedo_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned int& __v) const{ return _M_extract_int(__beg, __end, __io, __err, __v); }virtual iter_typedo_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned long& __v) const{ return _M_extract_int(__beg, __end, __io, __err, __v); }virtual iter_typedo_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, long long& __v) const{ return _M_extract_int(__beg, __end, __io, __err, __v); }virtual iter_typedo_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, unsigned long long& __v) const{ return _M_extract_int(__beg, __end, __io, __err, __v); }virtual iter_typedo_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const;virtual iter_typedo_get(iter_type, iter_type, ios_base&, ios_base::iostate&,double&) const;virtual iter_typedo_get(iter_type, iter_type, ios_base&, ios_base::iostate&,long double&) const;virtual iter_typedo_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const;
# 2235 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3};templatelocale::id num_get<_CharT, _InIter>::id;
# 2253 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3templateclass num_put : public locale::facet{public:typedef _CharT char_type;typedef _OutIter iter_type;static locale::id id;
# 2274 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3explicitnum_put(size_t __refs = 0) : facet(__refs) { }
# 2292 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeput(iter_type __s, ios_base& __io, char_type __fill, bool __v) const{ return this->do_put(__s, __io, __fill, __v); }
# 2334 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeput(iter_type __s, ios_base& __io, char_type __fill, long __v) const{ return this->do_put(__s, __io, __fill, __v); }iter_typeput(iter_type __s, ios_base& __io, char_type __fill,unsigned long __v) const{ return this->do_put(__s, __io, __fill, __v); }iter_typeput(iter_type __s, ios_base& __io, char_type __fill, long long __v) const{ return this->do_put(__s, __io, __fill, __v); }iter_typeput(iter_type __s, ios_base& __io, char_type __fill,unsigned long long __v) const{ return this->do_put(__s, __io, __fill, __v); }
# 2397 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeput(iter_type __s, ios_base& __io, char_type __fill, double __v) const{ return this->do_put(__s, __io, __fill, __v); }iter_typeput(iter_type __s, ios_base& __io, char_type __fill,long double __v) const{ return this->do_put(__s, __io, __fill, __v); }
# 2422 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3iter_typeput(iter_type __s, ios_base& __io, char_type __fill,const void* __v) const{ return this->do_put(__s, __io, __fill, __v); }protected:templateiter_type_M_insert_float(iter_type, ios_base& __io, char_type __fill,char __mod, _ValueT __v) const;void_M_group_float(const char* __grouping, size_t __grouping_size,char_type __sep, const char_type* __p, char_type* __new,char_type* __cs, int& __len) const;templateiter_type_M_insert_int(iter_type, ios_base& __io, char_type __fill,_ValueT __v) const;void_M_group_int(const char* __grouping, size_t __grouping_size,char_type __sep, ios_base& __io, char_type* __new,char_type* __cs, int& __len) const;void_M_pad(char_type __fill, streamsize __w, ios_base& __io,char_type* __new, const char_type* __cs, int& __len) const;virtual~num_put() { };
# 2470 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3virtual iter_typedo_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const;virtual iter_typedo_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const{ return _M_insert_int(__s, __io, __fill, __v); }virtual iter_typedo_put(iter_type __s, ios_base& __io, char_type __fill,unsigned long __v) const{ return _M_insert_int(__s, __io, __fill, __v); }virtual iter_typedo_put(iter_type __s, ios_base& __io, char_type __fill,long long __v) const{ return _M_insert_int(__s, __io, __fill, __v); }virtual iter_typedo_put(iter_type __s, ios_base& __io, char_type __fill,unsigned long long __v) const{ return _M_insert_int(__s, __io, __fill, __v); }virtual iter_typedo_put(iter_type, ios_base&, char_type, double) const;virtual iter_typedo_put(iter_type, ios_base&, char_type, long double) const;virtual iter_typedo_put(iter_type, ios_base&, char_type, const void*) const;};template locale::id num_put<_CharT, _OutIter>::id;templateinline boolisspace(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::space, __c); }templateinline boolisprint(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::print, __c); }templateinline booliscntrl(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::cntrl, __c); }templateinline boolisupper(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::upper, __c); }templateinline boolislower(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::lower, __c); }templateinline boolisalpha(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::alpha, __c); }templateinline boolisdigit(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::digit, __c); }templateinline boolispunct(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::punct, __c); }templateinline boolisxdigit(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::xdigit, __c); }templateinline boolisalnum(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::alnum, __c); }templateinline boolisgraph(_CharT __c, const locale& __loc){ return use_facet >(__loc).is(ctype_base::graph, __c); }templateinline _CharTtoupper(_CharT __c, const locale& __loc){ return use_facet >(__loc).toupper(__c); }templateinline _CharTtolower(_CharT __c, const locale& __loc){ return use_facet >(__loc).tolower(__c); }}# 1 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 1 3
# 33 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3# 34 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3namespace std __attribute__ ((__visibility__ ("default")))
{templatestruct __use_cache{const _Facet*operator() (const locale& __loc) const;};templatestruct __use_cache<__numpunct_cache<_CharT> >{const __numpunct_cache<_CharT>*operator() (const locale& __loc) const{const size_t __i = numpunct<_CharT>::id._M_id();const locale::facet** __caches = __loc._M_impl->_M_caches;if (!__caches[__i]){__numpunct_cache<_CharT>* __tmp = 0;try{__tmp = new __numpunct_cache<_CharT>;__tmp->_M_cache(__loc);}catch(...){delete __tmp;throw;}__loc._M_impl->_M_install_cache(__tmp, __i);}return static_cast*>(__caches[__i]);}};templatevoid__numpunct_cache<_CharT>::_M_cache(const locale& __loc){_M_allocated = true;const numpunct<_CharT>& __np = use_facet >(__loc);char* __grouping = 0;_CharT* __truename = 0;_CharT* __falsename = 0;try{_M_grouping_size = __np.grouping().size();__grouping = new char[_M_grouping_size];__np.grouping().copy(__grouping, _M_grouping_size);_M_grouping = __grouping;_M_use_grouping = (_M_grouping_size&& static_cast(_M_grouping[0]) > 0&& (_M_grouping[0]!= __gnu_cxx::__numeric_traits::__max));_M_truename_size = __np.truename().size();__truename = new _CharT[_M_truename_size];__np.truename().copy(__truename, _M_truename_size);_M_truename = __truename;_M_falsename_size = __np.falsename().size();__falsename = new _CharT[_M_falsename_size];__np.falsename().copy(__falsename, _M_falsename_size);_M_falsename = __falsename;_M_decimal_point = __np.decimal_point();_M_thousands_sep = __np.thousands_sep();const ctype<_CharT>& __ct = use_facet >(__loc);__ct.widen(__num_base::_S_atoms_out,__num_base::_S_atoms_out+ __num_base::_S_oend, _M_atoms_out);__ct.widen(__num_base::_S_atoms_in,__num_base::_S_atoms_in+ __num_base::_S_iend, _M_atoms_in);}catch(...){delete [] __grouping;delete [] __truename;delete [] __falsename;throw;}}
# 136 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3__attribute__ ((__pure__)) bool__verify_grouping(const char* __grouping, size_t __grouping_size,const string& __grouping_tmp) throw ();template_InIternum_get<_CharT, _InIter>::_M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,ios_base::iostate& __err, string& __xtrc) const{typedef char_traits<_CharT> __traits_type;typedef __numpunct_cache<_CharT> __cache_type;__use_cache<__cache_type> __uc;const locale& __loc = __io._M_getloc();const __cache_type* __lc = __uc(__loc);const _CharT* __lit = __lc->_M_atoms_in;char_type __c = char_type();bool __testeof = __beg == __end;if (!__testeof){__c = *__beg;const bool __plus = __c == __lit[__num_base::_S_iplus];if ((__plus || __c == __lit[__num_base::_S_iminus])&& !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)&& !(__c == __lc->_M_decimal_point)){__xtrc += __plus ? '+' : '-';if (++__beg != __end)__c = *__beg;else__testeof = true;}}bool __found_mantissa = false;int __sep_pos = 0;while (!__testeof){if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)|| __c == __lc->_M_decimal_point)break;else if (__c == __lit[__num_base::_S_izero]){if (!__found_mantissa){__xtrc += '0';__found_mantissa = true;}++__sep_pos;if (++__beg != __end)__c = *__beg;else__testeof = true;}elsebreak;}bool __found_dec = false;bool __found_sci = false;string __found_grouping;if (__lc->_M_use_grouping)__found_grouping.reserve(32);const char_type* __lit_zero = __lit + __num_base::_S_izero;if (!__lc->_M_allocated)while (!__testeof){const int __digit = _M_find(__lit_zero, 10, __c);if (__digit != -1){__xtrc += '0' + __digit;__found_mantissa = true;}else if (__c == __lc->_M_decimal_point&& !__found_dec && !__found_sci){__xtrc += '.';__found_dec = true;}else if ((__c == __lit[__num_base::_S_ie]|| __c == __lit[__num_base::_S_iE])&& !__found_sci && __found_mantissa){__xtrc += 'e';__found_sci = true;if (++__beg != __end){__c = *__beg;const bool __plus = __c == __lit[__num_base::_S_iplus];if (__plus || __c == __lit[__num_base::_S_iminus])__xtrc += __plus ? '+' : '-';elsecontinue;}else{__testeof = true;break;}}elsebreak;if (++__beg != __end)__c = *__beg;else__testeof = true;}elsewhile (!__testeof){if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep){if (!__found_dec && !__found_sci){if (__sep_pos){__found_grouping += static_cast(__sep_pos);__sep_pos = 0;}else{__xtrc.clear();break;}}elsebreak;}else if (__c == __lc->_M_decimal_point){if (!__found_dec && !__found_sci){if (__found_grouping.size())__found_grouping += static_cast(__sep_pos);__xtrc += '.';__found_dec = true;}elsebreak;}else{const char_type* __q =__traits_type::find(__lit_zero, 10, __c);if (__q){__xtrc += '0' + (__q - __lit_zero);__found_mantissa = true;++__sep_pos;}else if ((__c == __lit[__num_base::_S_ie]|| __c == __lit[__num_base::_S_iE])&& !__found_sci && __found_mantissa){if (__found_grouping.size() && !__found_dec)__found_grouping += static_cast(__sep_pos);__xtrc += 'e';__found_sci = true;if (++__beg != __end){__c = *__beg;const bool __plus = __c == __lit[__num_base::_S_iplus];if ((__plus || __c == __lit[__num_base::_S_iminus])&& !(__lc->_M_use_grouping&& __c == __lc->_M_thousands_sep)&& !(__c == __lc->_M_decimal_point))__xtrc += __plus ? '+' : '-';elsecontinue;}else{__testeof = true;break;}}elsebreak;}if (++__beg != __end)__c = *__beg;else__testeof = true;}if (__found_grouping.size()){if (!__found_dec && !__found_sci)__found_grouping += static_cast(__sep_pos);if (!std::__verify_grouping(__lc->_M_grouping,__lc->_M_grouping_size,__found_grouping))__err = ios_base::failbit;}return __beg;}templatetemplate_InIternum_get<_CharT, _InIter>::_M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,ios_base::iostate& __err, _ValueT& __v) const{typedef char_traits<_CharT> __traits_type;using __gnu_cxx::__add_unsigned;typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;typedef __numpunct_cache<_CharT> __cache_type;__use_cache<__cache_type> __uc;const locale& __loc = __io._M_getloc();const __cache_type* __lc = __uc(__loc);const _CharT* __lit = __lc->_M_atoms_in;char_type __c = char_type();const ios_base::fmtflags __basefield = __io.flags()& ios_base::basefield;const bool __oct = __basefield == ios_base::oct;int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);bool __testeof = __beg == __end;bool __negative = false;if (!__testeof){__c = *__beg;__negative = __c == __lit[__num_base::_S_iminus];if ((__negative || __c == __lit[__num_base::_S_iplus])&& !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)&& !(__c == __lc->_M_decimal_point)){if (++__beg != __end)__c = *__beg;else__testeof = true;}}bool __found_zero = false;int __sep_pos = 0;while (!__testeof){if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)|| __c == __lc->_M_decimal_point)break;else if (__c == __lit[__num_base::_S_izero]&& (!__found_zero || __base == 10)){__found_zero = true;++__sep_pos;if (__basefield == 0)__base = 8;if (__base == 8)__sep_pos = 0;}else if (__found_zero&& (__c == __lit[__num_base::_S_ix]|| __c == __lit[__num_base::_S_iX])){if (__basefield == 0)__base = 16;if (__base == 16){__found_zero = false;__sep_pos = 0;}elsebreak;}elsebreak;if (++__beg != __end){__c = *__beg;if (!__found_zero)break;}else__testeof = true;}const size_t __len = (__base == 16 ? __num_base::_S_iend- __num_base::_S_izero : __base);string __found_grouping;if (__lc->_M_use_grouping)__found_grouping.reserve(32);bool __testfail = false;bool __testoverflow = false;const __unsigned_type __max =(__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)? -__gnu_cxx::__numeric_traits<_ValueT>::__min: __gnu_cxx::__numeric_traits<_ValueT>::__max;const __unsigned_type __smax = __max / __base;__unsigned_type __result = 0;int __digit = 0;const char_type* __lit_zero = __lit + __num_base::_S_izero;if (!__lc->_M_allocated)while (!__testeof){__digit = _M_find(__lit_zero, __len, __c);if (__digit == -1)break;if (__result > __smax)__testoverflow = true;else{__result *= __base;__testoverflow |= __result > __max - __digit;__result += __digit;++__sep_pos;}if (++__beg != __end)__c = *__beg;else__testeof = true;}elsewhile (!__testeof){if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep){if (__sep_pos){__found_grouping += static_cast(__sep_pos);__sep_pos = 0;}else{__testfail = true;break;}}else if (__c == __lc->_M_decimal_point)break;else{const char_type* __q =__traits_type::find(__lit_zero, __len, __c);if (!__q)break;__digit = __q - __lit_zero;if (__digit > 15)__digit -= 6;if (__result > __smax)__testoverflow = true;else{__result *= __base;__testoverflow |= __result > __max - __digit;__result += __digit;++__sep_pos;}}if (++__beg != __end)__c = *__beg;else__testeof = true;}if (__found_grouping.size()){__found_grouping += static_cast(__sep_pos);if (!std::__verify_grouping(__lc->_M_grouping,__lc->_M_grouping_size,__found_grouping))__err = ios_base::failbit;}if ((!__sep_pos && !__found_zero && !__found_grouping.size())|| __testfail){__v = 0;__err = ios_base::failbit;}else if (__testoverflow){if (__negative&& __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)__v = __gnu_cxx::__numeric_traits<_ValueT>::__min;else__v = __gnu_cxx::__numeric_traits<_ValueT>::__max;__err = ios_base::failbit;}else__v = __negative ? -__result : __result;if (__testeof)__err |= ios_base::eofbit;return __beg;}template_InIternum_get<_CharT, _InIter>::do_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, bool& __v) const{if (!(__io.flags() & ios_base::boolalpha)){long __l = -1;__beg = _M_extract_int(__beg, __end, __io, __err, __l);if (__l == 0 || __l == 1)__v = bool(__l);else{__v = true;__err = ios_base::failbit;if (__beg == __end)__err |= ios_base::eofbit;}}else{typedef __numpunct_cache<_CharT> __cache_type;__use_cache<__cache_type> __uc;const locale& __loc = __io._M_getloc();const __cache_type* __lc = __uc(__loc);bool __testf = true;bool __testt = true;bool __donef = __lc->_M_falsename_size == 0;bool __donet = __lc->_M_truename_size == 0;bool __testeof = false;size_t __n = 0;while (!__donef || !__donet){if (__beg == __end){__testeof = true;break;}const char_type __c = *__beg;if (!__donef)__testf = __c == __lc->_M_falsename[__n];if (!__testf && __donet)break;if (!__donet)__testt = __c == __lc->_M_truename[__n];if (!__testt && __donef)break;if (!__testt && !__testf)break;++__n;++__beg;__donef = !__testf || __n >= __lc->_M_falsename_size;__donet = !__testt || __n >= __lc->_M_truename_size;}if (__testf && __n == __lc->_M_falsename_size && __n){__v = false;if (__testt && __n == __lc->_M_truename_size)__err = ios_base::failbit;else__err = __testeof ? ios_base::eofbit : ios_base::goodbit;}else if (__testt && __n == __lc->_M_truename_size && __n){__v = true;__err = __testeof ? ios_base::eofbit : ios_base::goodbit;}else{__v = false;__err = ios_base::failbit;if (__testeof)__err |= ios_base::eofbit;}}return __beg;}template_InIternum_get<_CharT, _InIter>::do_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, float& __v) const{string __xtrc;__xtrc.reserve(32);__beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());if (__beg == __end)__err |= ios_base::eofbit;return __beg;}template_InIternum_get<_CharT, _InIter>::do_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, double& __v) const{string __xtrc;__xtrc.reserve(32);__beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());if (__beg == __end)__err |= ios_base::eofbit;return __beg;}
# 730 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3template_InIternum_get<_CharT, _InIter>::do_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, long double& __v) const{string __xtrc;__xtrc.reserve(32);__beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());if (__beg == __end)__err |= ios_base::eofbit;return __beg;}template_InIternum_get<_CharT, _InIter>::do_get(iter_type __beg, iter_type __end, ios_base& __io,ios_base::iostate& __err, void*& __v) const{typedef ios_base::fmtflags fmtflags;const fmtflags __fmt = __io.flags();__io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);typedef __gnu_cxx::__conditional_type<(sizeof(void*)<= sizeof(unsigned long)),unsigned long, unsigned long long>::__type _UIntPtrType;_UIntPtrType __ul;__beg = _M_extract_int(__beg, __end, __io, __err, __ul);__io.flags(__fmt);__v = reinterpret_cast(__ul);return __beg;}templatevoidnum_put<_CharT, _OutIter>::_M_pad(_CharT __fill, streamsize __w, ios_base& __io,_CharT* __new, const _CharT* __cs, int& __len) const{__pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,__cs, __w, __len);__len = static_cast(__w);}templateint__int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,ios_base::fmtflags __flags, bool __dec){_CharT* __buf = __bufend;if (__builtin_expect(__dec, true)){do{*--__buf = __lit[(__v % 10) + __num_base::_S_odigits];__v /= 10;}while (__v != 0);}else if ((__flags & ios_base::basefield) == ios_base::oct){do{*--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];__v >>= 3;}while (__v != 0);}else{const bool __uppercase = __flags & ios_base::uppercase;const int __case_offset = __uppercase ? __num_base::_S_oudigits: __num_base::_S_odigits;do{*--__buf = __lit[(__v & 0xf) + __case_offset];__v >>= 4;}while (__v != 0);}return __bufend - __buf;}templatevoidnum_put<_CharT, _OutIter>::_M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,ios_base&, _CharT* __new, _CharT* __cs, int& __len) const{_CharT* __p = std::__add_grouping(__new, __sep, __grouping,__grouping_size, __cs, __cs + __len);__len = __p - __new;}templatetemplate_OutIternum_put<_CharT, _OutIter>::_M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,_ValueT __v) const{using __gnu_cxx::__add_unsigned;typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;typedef __numpunct_cache<_CharT> __cache_type;__use_cache<__cache_type> __uc;const locale& __loc = __io._M_getloc();const __cache_type* __lc = __uc(__loc);const _CharT* __lit = __lc->_M_atoms_out;const ios_base::fmtflags __flags = __io.flags();const int __ilen = 5 * sizeof(_ValueT);_CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)* __ilen));const ios_base::fmtflags __basefield = __flags & ios_base::basefield;const bool __dec = (__basefield != ios_base::oct&& __basefield != ios_base::hex);const __unsigned_type __u = ((__v > 0 || !__dec)? __unsigned_type(__v): -__unsigned_type(__v));int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);__cs += __ilen - __len;if (__lc->_M_use_grouping){_CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)* (__len + 1)* 2));_M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,__lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);__cs = __cs2 + 2;}if (__builtin_expect(__dec, true)){if (__v >= 0){if (bool(__flags & ios_base::showpos)&& __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)*--__cs = __lit[__num_base::_S_oplus], ++__len;}else*--__cs = __lit[__num_base::_S_ominus], ++__len;}else if (bool(__flags & ios_base::showbase) && __v){if (__basefield == ios_base::oct)*--__cs = __lit[__num_base::_S_odigits], ++__len;else{const bool __uppercase = __flags & ios_base::uppercase;*--__cs = __lit[__num_base::_S_ox + __uppercase];*--__cs = __lit[__num_base::_S_odigits];__len += 2;}}const streamsize __w = __io.width();if (__w > static_cast(__len)){_CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)* __w));_M_pad(__fill, __w, __io, __cs3, __cs, __len);__cs = __cs3;}__io.width(0);return std::__write(__s, __cs, __len);}templatevoidnum_put<_CharT, _OutIter>::_M_group_float(const char* __grouping, size_t __grouping_size,_CharT __sep, const _CharT* __p, _CharT* __new,_CharT* __cs, int& __len) const{const int __declen = __p ? __p - __cs : __len;_CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,__grouping_size,__cs, __cs + __declen);int __newlen = __p2 - __new;if (__p){char_traits<_CharT>::copy(__p2, __p, __len - __declen);__newlen += __len - __declen;}__len = __newlen;}
# 966 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3templatetemplate_OutIternum_put<_CharT, _OutIter>::_M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,_ValueT __v) const{typedef __numpunct_cache<_CharT> __cache_type;__use_cache<__cache_type> __uc;const locale& __loc = __io._M_getloc();const __cache_type* __lc = __uc(__loc);const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();const int __max_digits =__gnu_cxx::__numeric_traits<_ValueT>::__digits10;int __len;char __fbuf[16];__num_base::_S_format_float(__io, __fbuf, __mod);int __cs_size = __max_digits * 3;char* __cs = static_cast(__builtin_alloca(__cs_size));__len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,__fbuf, __prec, __v);if (__len >= __cs_size){__cs_size = __len + 1;__cs = static_cast(__builtin_alloca(__cs_size));__len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,__fbuf, __prec, __v);}
# 1027 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3const ctype<_CharT>& __ctype = use_facet >(__loc);_CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)* __len));__ctype.widen(__cs, __cs + __len, __ws);_CharT* __wp = 0;const char* __p = char_traits::find(__cs, __len, '.');if (__p){__wp = __ws + (__p - __cs);*__wp = __lc->_M_decimal_point;}if (__lc->_M_use_grouping&& (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'&& __cs[1] >= '0' && __cs[2] >= '0'))){_CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)* __len * 2));streamsize __off = 0;if (__cs[0] == '-' || __cs[0] == '+'){__off = 1;__ws2[0] = __ws[0];__len -= 1;}_M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,__lc->_M_thousands_sep, __wp, __ws2 + __off,__ws + __off, __len);__len += __off;__ws = __ws2;}const streamsize __w = __io.width();if (__w > static_cast(__len)){_CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)* __w));_M_pad(__fill, __w, __io, __ws3, __ws, __len);__ws = __ws3;}__io.width(0);return std::__write(__s, __ws, __len);}template_OutIternum_put<_CharT, _OutIter>::do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const{const ios_base::fmtflags __flags = __io.flags();if ((__flags & ios_base::boolalpha) == 0){const long __l = __v;__s = _M_insert_int(__s, __io, __fill, __l);}else{typedef __numpunct_cache<_CharT> __cache_type;__use_cache<__cache_type> __uc;const locale& __loc = __io._M_getloc();const __cache_type* __lc = __uc(__loc);const _CharT* __name = __v ? __lc->_M_truename: __lc->_M_falsename;int __len = __v ? __lc->_M_truename_size: __lc->_M_falsename_size;const streamsize __w = __io.width();if (__w > static_cast(__len)){const streamsize __plen = __w - __len;_CharT* __ps= static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)* __plen));char_traits<_CharT>::assign(__ps, __plen, __fill);__io.width(0);if ((__flags & ios_base::adjustfield) == ios_base::left){__s = std::__write(__s, __name, __len);__s = std::__write(__s, __ps, __plen);}else{__s = std::__write(__s, __ps, __plen);__s = std::__write(__s, __name, __len);}return __s;}__io.width(0);__s = std::__write(__s, __name, __len);}return __s;}template_OutIternum_put<_CharT, _OutIter>::do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const{ return _M_insert_float(__s, __io, __fill, char(), __v); }
# 1152 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3template_OutIternum_put<_CharT, _OutIter>::do_put(iter_type __s, ios_base& __io, char_type __fill,long double __v) const{ return _M_insert_float(__s, __io, __fill, 'L', __v); }template_OutIternum_put<_CharT, _OutIter>::do_put(iter_type __s, ios_base& __io, char_type __fill,const void* __v) const{const ios_base::fmtflags __flags = __io.flags();const ios_base::fmtflags __fmt = ~(ios_base::basefield| ios_base::uppercase);__io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));typedef __gnu_cxx::__conditional_type<(sizeof(const void*)<= sizeof(unsigned long)),unsigned long, unsigned long long>::__type _UIntPtrType;__s = _M_insert_int(__s, __io, __fill,reinterpret_cast<_UIntPtrType>(__v));__io.flags(__flags);return __s;}# 1189 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3templatevoid__pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,_CharT* __news, const _CharT* __olds,streamsize __newlen, streamsize __oldlen){const size_t __plen = static_cast(__newlen - __oldlen);const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;if (__adjust == ios_base::left){_Traits::copy(__news, __olds, __oldlen);_Traits::assign(__news + __oldlen, __plen, __fill);return;}size_t __mod = 0;if (__adjust == ios_base::internal){const locale& __loc = __io._M_getloc();const ctype<_CharT>& __ctype = use_facet >(__loc);if (__ctype.widen('-') == __olds[0]|| __ctype.widen('+') == __olds[0]){__news[0] = __olds[0];__mod = 1;++__news;}else if (__ctype.widen('0') == __olds[0]&& __oldlen > 1&& (__ctype.widen('x') == __olds[1]|| __ctype.widen('X') == __olds[1])){__news[0] = __olds[0];__news[1] = __olds[1];__mod = 2;__news += 2;}}_Traits::assign(__news, __plen, __fill);_Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);}template_CharT*__add_grouping(_CharT* __s, _CharT __sep,const char* __gbeg, size_t __gsize,const _CharT* __first, const _CharT* __last){size_t __idx = 0;size_t __ctr = 0;while (__last - __first > __gbeg[__idx]&& static_cast(__gbeg[__idx]) > 0&& __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max){__last -= __gbeg[__idx];__idx < __gsize - 1 ? ++__idx : ++__ctr;}while (__first != __last)*__s++ = *__first++;while (__ctr--){*__s++ = __sep;for (char __i = __gbeg[__idx]; __i > 0; --__i)*__s++ = *__first++;}while (__idx--){*__s++ = __sep;for (char __i = __gbeg[__idx]; __i > 0; --__i)*__s++ = *__first++;}return __s;}extern template class numpunct;extern template class numpunct_byname;extern template class num_get;extern template class num_put;extern template class ctype_byname;extern templateconst ctype&use_facet >(const locale&);extern templateconst numpunct&use_facet >(const locale&);extern templateconst num_put&use_facet >(const locale&);extern templateconst num_get&use_facet >(const locale&);extern templateboolhas_facet >(const locale&);extern templateboolhas_facet >(const locale&);extern templateboolhas_facet >(const locale&);extern templateboolhas_facet >(const locale&);extern template class numpunct;extern template class numpunct_byname;extern template class num_get;extern template class num_put;extern template class ctype_byname;extern templateconst ctype&use_facet >(const locale&);extern templateconst numpunct&use_facet >(const locale&);extern templateconst num_put&use_facet >(const locale&);extern templateconst num_get&use_facet >(const locale&);extern templateboolhas_facet >(const locale&);extern templateboolhas_facet >(const locale&);extern templateboolhas_facet >(const locale&);extern templateboolhas_facet >(const locale&);}
# 2609 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3
# 38 "/usr/include/c++/4.8.2/bits/basic_ios.h" 2 3namespace std __attribute__ ((__visibility__ ("default")))
{templateinline const _Facet&__check_facet(const _Facet* __f){if (!__f)__throw_bad_cast();return *__f;}
# 65 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3templateclass basic_ios : public ios_base{public:typedef _CharT char_type;typedef typename _Traits::int_type int_type;typedef typename _Traits::pos_type pos_type;typedef typename _Traits::off_type off_type;typedef _Traits traits_type;typedef ctype<_CharT> __ctype_type;typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >__num_put_type;typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >__num_get_type;protected:basic_ostream<_CharT, _Traits>* _M_tie;mutable char_type _M_fill;mutable bool _M_fill_init;basic_streambuf<_CharT, _Traits>* _M_streambuf;const __ctype_type* _M_ctype;const __num_put_type* _M_num_put;const __num_get_type* _M_num_get;public:operator void*() const{ return this->fail() ? 0 : const_cast(this); }booloperator!() const{ return this->fail(); }
# 130 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3iostaterdstate() const{ return _M_streambuf_state; }
# 141 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3voidclear(iostate __state = goodbit);voidsetstate(iostate __state){ this->clear(this->rdstate() | __state); }void_M_setstate(iostate __state){_M_streambuf_state |= __state;if (this->exceptions() & __state)throw;}boolgood() const{ return this->rdstate() == 0; }booleof() const{ return (this->rdstate() & eofbit) != 0; }
# 194 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3boolfail() const{ return (this->rdstate() & (badbit | failbit)) != 0; }boolbad() const{ return (this->rdstate() & badbit) != 0; }
# 215 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3iostateexceptions() const{ return _M_exception; }
# 250 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3voidexceptions(iostate __except){_M_exception = __except;this->clear(_M_streambuf_state);}explicitbasic_ios(basic_streambuf<_CharT, _Traits>* __sb): ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),_M_ctype(0), _M_num_put(0), _M_num_get(0){ this->init(__sb); }virtual~basic_ios() { }
# 288 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3basic_ostream<_CharT, _Traits>*tie() const{ return _M_tie; }
# 300 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3basic_ostream<_CharT, _Traits>*tie(basic_ostream<_CharT, _Traits>* __tiestr){basic_ostream<_CharT, _Traits>* __old = _M_tie;_M_tie = __tiestr;return __old;}basic_streambuf<_CharT, _Traits>*rdbuf() const{ return _M_streambuf; }
# 340 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3basic_streambuf<_CharT, _Traits>*rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
# 354 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3basic_ios©fmt(const basic_ios& __rhs);char_typefill() const{if (!_M_fill_init){_M_fill = this->widen(' ');_M_fill_init = true;}return _M_fill;}
# 383 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3char_typefill(char_type __ch){char_type __old = this->fill();_M_fill = __ch;return __old;}
# 403 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3localeimbue(const locale& __loc);
# 423 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3charnarrow(char_type __c, char __dfault) const{ return __check_facet(_M_ctype).narrow(__c, __dfault); }
# 442 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3char_typewiden(char __c) const{ return __check_facet(_M_ctype).widen(__c); }protected:basic_ios(): ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),_M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0){ }voidinit(basic_streambuf<_CharT, _Traits>* __sb);void_M_cache_locale(const locale& __loc);};}# 1 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 1 3
# 33 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 3# 34 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 3namespace std __attribute__ ((__visibility__ ("default")))
{templatevoidbasic_ios<_CharT, _Traits>::clear(iostate __state){if (this->rdbuf())_M_streambuf_state = __state;else_M_streambuf_state = __state | badbit;if (this->exceptions() & this->rdstate())__throw_ios_failure(("basic_ios::clear"));}templatebasic_streambuf<_CharT, _Traits>*basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb){basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;_M_streambuf = __sb;this->clear();return __old;}templatebasic_ios<_CharT, _Traits>&basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs){if (this != &__rhs){_Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?_M_local_word : new _Words[__rhs._M_word_size];_Callback_list* __cb = __rhs._M_callbacks;if (__cb)__cb->_M_add_reference();_M_call_callbacks(erase_event);if (_M_word != _M_local_word){delete [] _M_word;_M_word = 0;}_M_dispose_callbacks();_M_callbacks = __cb;for (int __i = 0; __i < __rhs._M_word_size; ++__i)__words[__i] = __rhs._M_word[__i];_M_word = __words;_M_word_size = __rhs._M_word_size;this->flags(__rhs.flags());this->width(__rhs.width());this->precision(__rhs.precision());this->tie(__rhs.tie());this->fill(__rhs.fill());_M_ios_locale = __rhs.getloc();_M_cache_locale(_M_ios_locale);_M_call_callbacks(copyfmt_event);this->exceptions(__rhs.exceptions());}return *this;}templatelocalebasic_ios<_CharT, _Traits>::imbue(const locale& __loc){locale __old(this->getloc());ios_base::imbue(__loc);_M_cache_locale(__loc);if (this->rdbuf() != 0)this->rdbuf()->pubimbue(__loc);return __old;}templatevoidbasic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb){ios_base::_M_init();_M_cache_locale(_M_ios_locale);
# 146 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 3_M_fill = _CharT();_M_fill_init = false;_M_tie = 0;_M_exception = goodbit;_M_streambuf = __sb;_M_streambuf_state = __sb ? goodbit : badbit;}templatevoidbasic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc){if (__builtin_expect(has_facet<__ctype_type>(__loc), true))_M_ctype = &use_facet<__ctype_type>(__loc);else_M_ctype = 0;if (__builtin_expect(has_facet<__num_put_type>(__loc), true))_M_num_put = &use_facet<__num_put_type>(__loc);else_M_num_put = 0;if (__builtin_expect(has_facet<__num_get_type>(__loc), true))_M_num_get = &use_facet<__num_get_type>(__loc);else_M_num_get = 0;}extern template class basic_ios;extern template class basic_ios;}
# 476 "/usr/include/c++/4.8.2/bits/basic_ios.h" 2 3
# 45 "/usr/include/c++/4.8.2/ios" 2 3
# 39 "/usr/include/c++/4.8.2/ostream" 2 3namespace std __attribute__ ((__visibility__ ("default")))
{# 57 "/usr/include/c++/4.8.2/ostream" 3templateclass basic_ostream : virtual public basic_ios<_CharT, _Traits>{public:typedef _CharT char_type;typedef typename _Traits::int_type int_type;typedef typename _Traits::pos_type pos_type;typedef typename _Traits::off_type off_type;typedef _Traits traits_type;typedef basic_streambuf<_CharT, _Traits> __streambuf_type;typedef basic_ios<_CharT, _Traits> __ios_type;typedef basic_ostream<_CharT, _Traits> __ostream_type;typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >__num_put_type;typedef ctype<_CharT> __ctype_type;
# 83 "/usr/include/c++/4.8.2/ostream" 3explicitbasic_ostream(__streambuf_type* __sb){ this->init(__sb); }virtual~basic_ostream() { }class sentry;friend class sentry;
# 107 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&operator<<(__ostream_type& (*__pf)(__ostream_type&)){return __pf(*this);}__ostream_type&operator<<(__ios_type& (*__pf)(__ios_type&)){__pf(*this);return *this;}__ostream_type&operator<<(ios_base& (*__pf) (ios_base&)){__pf(*this);return *this;}
# 165 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&operator<<(long __n){ return _M_insert(__n); }__ostream_type&operator<<(unsigned long __n){ return _M_insert(__n); }__ostream_type&operator<<(bool __n){ return _M_insert(__n); }__ostream_type&operator<<(short __n);__ostream_type&operator<<(unsigned short __n){return _M_insert(static_cast(__n));}__ostream_type&operator<<(int __n);__ostream_type&operator<<(unsigned int __n){return _M_insert(static_cast(__n));}__ostream_type&operator<<(long long __n){ return _M_insert(__n); }__ostream_type&operator<<(unsigned long long __n){ return _M_insert(__n); }
# 219 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&operator<<(double __f){ return _M_insert(__f); }__ostream_type&operator<<(float __f){return _M_insert(static_cast(__f));}__ostream_type&operator<<(long double __f){ return _M_insert(__f); }
# 244 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&operator<<(const void* __p){ return _M_insert(__p); }
# 269 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&operator<<(__streambuf_type* __sb);
# 302 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&put(char_type __c);void_M_write(const char_type* __s, streamsize __n){const streamsize __put = this->rdbuf()->sputn(__s, __n);if (__put != __n)this->setstate(ios_base::badbit);}
# 334 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&write(const char_type* __s, streamsize __n);
# 347 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&flush();
# 357 "/usr/include/c++/4.8.2/ostream" 3pos_typetellp();
# 368 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&seekp(pos_type);
# 380 "/usr/include/c++/4.8.2/ostream" 3__ostream_type&seekp(off_type, ios_base::seekdir);protected:basic_ostream(){ this->init(0); }template__ostream_type&_M_insert(_ValueT __v);};
# 399 "/usr/include/c++/4.8.2/ostream" 3template class basic_ostream<_CharT, _Traits>::sentry{bool _M_ok;basic_ostream<_CharT, _Traits>& _M_os;public:
# 418 "/usr/include/c++/4.8.2/ostream" 3explicitsentry(basic_ostream<_CharT, _Traits>& __os);
# 428 "/usr/include/c++/4.8.2/ostream" 3~sentry(){if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()){if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)_M_os.setstate(ios_base::badbit);}}
# 449 "/usr/include/c++/4.8.2/ostream" 3operator bool() const{ return _M_ok; }};
# 469 "/usr/include/c++/4.8.2/ostream" 3templateinline basic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c){ return __ostream_insert(__out, &__c, 1); }templateinline basic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>& __out, char __c){ return (__out << __out.widen(__c)); }template inline basic_ostream&operator<<(basic_ostream& __out, char __c){ return __ostream_insert(__out, &__c, 1); }templateinline basic_ostream&operator<<(basic_ostream& __out, signed char __c){ return (__out << static_cast(__c)); }templateinline basic_ostream&operator<<(basic_ostream& __out, unsigned char __c){ return (__out << static_cast(__c)); }
# 511 "/usr/include/c++/4.8.2/ostream" 3templateinline basic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s){if (!__s)__out.setstate(ios_base::badbit);else__ostream_insert(__out, __s,static_cast(_Traits::length(__s)));return __out;}templatebasic_ostream<_CharT, _Traits> &operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);templateinline basic_ostream&operator<<(basic_ostream& __out, const char* __s){if (!__s)__out.setstate(ios_base::badbit);else__ostream_insert(__out, __s,static_cast(_Traits::length(__s)));return __out;}templateinline basic_ostream&operator<<(basic_ostream& __out, const signed char* __s){ return (__out << reinterpret_cast(__s)); }templateinline basic_ostream &operator<<(basic_ostream& __out, const unsigned char* __s){ return (__out << reinterpret_cast(__s)); }
# 562 "/usr/include/c++/4.8.2/ostream" 3templateinline basic_ostream<_CharT, _Traits>&endl(basic_ostream<_CharT, _Traits>& __os){ return flush(__os.put(__os.widen('\n'))); }
# 574 "/usr/include/c++/4.8.2/ostream" 3templateinline basic_ostream<_CharT, _Traits>&ends(basic_ostream<_CharT, _Traits>& __os){ return __os.put(_CharT()); }templateinline basic_ostream<_CharT, _Traits>&flush(basic_ostream<_CharT, _Traits>& __os){ return __os.flush(); }
# 609 "/usr/include/c++/4.8.2/ostream" 3}# 1 "/usr/include/c++/4.8.2/bits/ostream.tcc" 1 3
# 37 "/usr/include/c++/4.8.2/bits/ostream.tcc" 3# 38 "/usr/include/c++/4.8.2/bits/ostream.tcc" 3namespace std __attribute__ ((__visibility__ ("default")))
{templatebasic_ostream<_CharT, _Traits>::sentry::sentry(basic_ostream<_CharT, _Traits>& __os): _M_ok(false), _M_os(__os){if (__os.tie() && __os.good())__os.tie()->flush();if (__os.good())_M_ok = true;else__os.setstate(ios_base::failbit);}templatetemplatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::_M_insert(_ValueT __v){sentry __cerb(*this);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const __num_put_type& __np = __check_facet(this->_M_num_put);if (__np.put(*this, *this, this->fill(), __v).failed())__err |= ios_base::badbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::operator<<(short __n){const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;if (__fmt == ios_base::oct || __fmt == ios_base::hex)return _M_insert(static_cast(static_cast(__n)));elsereturn _M_insert(static_cast(__n));}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::operator<<(int __n){const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;if (__fmt == ios_base::oct || __fmt == ios_base::hex)return _M_insert(static_cast(static_cast(__n)));elsereturn _M_insert(static_cast(__n));}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::operator<<(__streambuf_type* __sbin){ios_base::iostate __err = ios_base::goodbit;sentry __cerb(*this);if (__cerb && __sbin){try{if (!__copy_streambufs(__sbin, this->rdbuf()))__err |= ios_base::failbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::failbit); }}else if (!__sbin)__err |= ios_base::badbit;if (__err)this->setstate(__err);return *this;}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::put(char_type __c){sentry __cerb(*this);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const int_type __put = this->rdbuf()->sputc(__c);if (traits_type::eq_int_type(__put, traits_type::eof()))__err |= ios_base::badbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::write(const _CharT* __s, streamsize __n){sentry __cerb(*this);if (__cerb){try{ _M_write(__s, __n); }catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }}return *this;}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::flush(){ios_base::iostate __err = ios_base::goodbit;try{if (this->rdbuf() && this->rdbuf()->pubsync() == -1)__err |= ios_base::badbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);return *this;}templatetypename basic_ostream<_CharT, _Traits>::pos_typebasic_ostream<_CharT, _Traits>::tellp(){pos_type __ret = pos_type(-1);try{if (!this->fail())__ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }return __ret;}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::seekp(pos_type __pos){ios_base::iostate __err = ios_base::goodbit;try{if (!this->fail()){const pos_type __p = this->rdbuf()->pubseekpos(__pos,ios_base::out);if (__p == pos_type(off_type(-1)))__err |= ios_base::failbit;}}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);return *this;}templatebasic_ostream<_CharT, _Traits>&basic_ostream<_CharT, _Traits>::seekp(off_type __off, ios_base::seekdir __dir){ios_base::iostate __err = ios_base::goodbit;try{if (!this->fail()){const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,ios_base::out);if (__p == pos_type(off_type(-1)))__err |= ios_base::failbit;}}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);return *this;}templatebasic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s){if (!__s)__out.setstate(ios_base::badbit);else{const size_t __clen = char_traits::length(__s);try{struct __ptr_guard{_CharT *__p;__ptr_guard (_CharT *__ip): __p(__ip) { }~__ptr_guard() { delete[] __p; }_CharT* __get() { return __p; }} __pg (new _CharT[__clen]);_CharT *__ws = __pg.__get();for (size_t __i = 0; __i < __clen; ++__i)__ws[__i] = __out.widen(__s[__i]);__ostream_insert(__out, __ws, __clen);}catch(__cxxabiv1::__forced_unwind&){__out._M_setstate(ios_base::badbit);throw;}catch(...){ __out._M_setstate(ios_base::badbit); }}return __out;}extern template class basic_ostream;extern template ostream& endl(ostream&);extern template ostream& ends(ostream&);extern template ostream& flush(ostream&);extern template ostream& operator<<(ostream&, char);extern template ostream& operator<<(ostream&, unsigned char);extern template ostream& operator<<(ostream&, signed char);extern template ostream& operator<<(ostream&, const char*);extern template ostream& operator<<(ostream&, const unsigned char*);extern template ostream& operator<<(ostream&, const signed char*);extern template ostream& ostream::_M_insert(long);extern template ostream& ostream::_M_insert(unsigned long);extern template ostream& ostream::_M_insert(bool);extern template ostream& ostream::_M_insert(long long);extern template ostream& ostream::_M_insert(unsigned long long);extern template ostream& ostream::_M_insert(double);extern template ostream& ostream::_M_insert(long double);extern template ostream& ostream::_M_insert(const void*);extern template class basic_ostream;extern template wostream& endl(wostream&);extern template wostream& ends(wostream&);extern template wostream& flush(wostream&);extern template wostream& operator<<(wostream&, wchar_t);extern template wostream& operator<<(wostream&, char);extern template wostream& operator<<(wostream&, const wchar_t*);extern template wostream& operator<<(wostream&, const char*);extern template wostream& wostream::_M_insert(long);extern template wostream& wostream::_M_insert(unsigned long);extern template wostream& wostream::_M_insert(bool);extern template wostream& wostream::_M_insert(long long);extern template wostream& wostream::_M_insert(unsigned long long);extern template wostream& wostream::_M_insert(double);extern template wostream& wostream::_M_insert(long double);extern template wostream& wostream::_M_insert(const void*);}
# 613 "/usr/include/c++/4.8.2/ostream" 2 3
# 40 "/usr/include/c++/4.8.2/iostream" 2 3
# 1 "/usr/include/c++/4.8.2/istream" 1 3
# 36 "/usr/include/c++/4.8.2/istream" 3# 37 "/usr/include/c++/4.8.2/istream" 3namespace std __attribute__ ((__visibility__ ("default")))
{# 57 "/usr/include/c++/4.8.2/istream" 3templateclass basic_istream : virtual public basic_ios<_CharT, _Traits>{public:typedef _CharT char_type;typedef typename _Traits::int_type int_type;typedef typename _Traits::pos_type pos_type;typedef typename _Traits::off_type off_type;typedef _Traits traits_type;typedef basic_streambuf<_CharT, _Traits> __streambuf_type;typedef basic_ios<_CharT, _Traits> __ios_type;typedef basic_istream<_CharT, _Traits> __istream_type;typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >__num_get_type;typedef ctype<_CharT> __ctype_type;protected:streamsize _M_gcount;public:explicitbasic_istream(__streambuf_type* __sb): _M_gcount(streamsize(0)){ this->init(__sb); }virtual~basic_istream(){ _M_gcount = streamsize(0); }class sentry;friend class sentry;
# 119 "/usr/include/c++/4.8.2/istream" 3__istream_type&operator>>(__istream_type& (*__pf)(__istream_type&)){ return __pf(*this); }__istream_type&operator>>(__ios_type& (*__pf)(__ios_type&)){__pf(*this);return *this;}__istream_type&operator>>(ios_base& (*__pf)(ios_base&)){__pf(*this);return *this;}
# 167 "/usr/include/c++/4.8.2/istream" 3__istream_type&operator>>(bool& __n){ return _M_extract(__n); }__istream_type&operator>>(short& __n);__istream_type&operator>>(unsigned short& __n){ return _M_extract(__n); }__istream_type&operator>>(int& __n);__istream_type&operator>>(unsigned int& __n){ return _M_extract(__n); }__istream_type&operator>>(long& __n){ return _M_extract(__n); }__istream_type&operator>>(unsigned long& __n){ return _M_extract(__n); }__istream_type&operator>>(long long& __n){ return _M_extract(__n); }__istream_type&operator>>(unsigned long long& __n){ return _M_extract(__n); }
# 213 "/usr/include/c++/4.8.2/istream" 3__istream_type&operator>>(float& __f){ return _M_extract(__f); }__istream_type&operator>>(double& __f){ return _M_extract(__f); }__istream_type&operator>>(long double& __f){ return _M_extract(__f); }
# 234 "/usr/include/c++/4.8.2/istream" 3__istream_type&operator>>(void*& __p){ return _M_extract(__p); }
# 258 "/usr/include/c++/4.8.2/istream" 3__istream_type&operator>>(__streambuf_type* __sb);
# 268 "/usr/include/c++/4.8.2/istream" 3streamsizegcount() const{ return _M_gcount; }
# 301 "/usr/include/c++/4.8.2/istream" 3int_typeget();
# 315 "/usr/include/c++/4.8.2/istream" 3__istream_type&get(char_type& __c);
# 342 "/usr/include/c++/4.8.2/istream" 3__istream_type&get(char_type* __s, streamsize __n, char_type __delim);
# 353 "/usr/include/c++/4.8.2/istream" 3__istream_type&get(char_type* __s, streamsize __n){ return this->get(__s, __n, this->widen('\n')); }
# 376 "/usr/include/c++/4.8.2/istream" 3__istream_type&get(__streambuf_type& __sb, char_type __delim);
# 386 "/usr/include/c++/4.8.2/istream" 3__istream_type&get(__streambuf_type& __sb){ return this->get(__sb, this->widen('\n')); }
# 415 "/usr/include/c++/4.8.2/istream" 3__istream_type&getline(char_type* __s, streamsize __n, char_type __delim);
# 426 "/usr/include/c++/4.8.2/istream" 3__istream_type&getline(char_type* __s, streamsize __n){ return this->getline(__s, __n, this->widen('\n')); }
# 450 "/usr/include/c++/4.8.2/istream" 3__istream_type&ignore(streamsize __n, int_type __delim);__istream_type&ignore(streamsize __n);__istream_type&ignore();
# 467 "/usr/include/c++/4.8.2/istream" 3int_typepeek();
# 485 "/usr/include/c++/4.8.2/istream" 3__istream_type&read(char_type* __s, streamsize __n);
# 504 "/usr/include/c++/4.8.2/istream" 3streamsizereadsome(char_type* __s, streamsize __n);
# 521 "/usr/include/c++/4.8.2/istream" 3__istream_type&putback(char_type __c);
# 537 "/usr/include/c++/4.8.2/istream" 3__istream_type&unget();
# 555 "/usr/include/c++/4.8.2/istream" 3intsync();
# 570 "/usr/include/c++/4.8.2/istream" 3pos_typetellg();
# 585 "/usr/include/c++/4.8.2/istream" 3__istream_type&seekg(pos_type);
# 601 "/usr/include/c++/4.8.2/istream" 3__istream_type&seekg(off_type, ios_base::seekdir);protected:basic_istream(): _M_gcount(streamsize(0)){ this->init(0); }template__istream_type&_M_extract(_ValueT& __v);};template<>basic_istream&basic_istream::getline(char_type* __s, streamsize __n, char_type __delim);template<>basic_istream&basic_istream::ignore(streamsize __n);template<>basic_istream&basic_istream::ignore(streamsize __n, int_type __delim);template<>basic_istream&basic_istream::getline(char_type* __s, streamsize __n, char_type __delim);template<>basic_istream&basic_istream::ignore(streamsize __n);template<>basic_istream&basic_istream::ignore(streamsize __n, int_type __delim);
# 656 "/usr/include/c++/4.8.2/istream" 3templateclass basic_istream<_CharT, _Traits>::sentry{bool _M_ok;public:typedef _Traits traits_type;typedef basic_streambuf<_CharT, _Traits> __streambuf_type;typedef basic_istream<_CharT, _Traits> __istream_type;typedef typename __istream_type::__ctype_type __ctype_type;typedef typename _Traits::int_type __int_type;
# 692 "/usr/include/c++/4.8.2/istream" 3explicitsentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
# 705 "/usr/include/c++/4.8.2/istream" 3operator bool() const{ return _M_ok; }};
# 721 "/usr/include/c++/4.8.2/istream" 3templatebasic_istream<_CharT, _Traits>&operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);templateinline basic_istream&operator>>(basic_istream& __in, unsigned char& __c){ return (__in >> reinterpret_cast(__c)); }templateinline basic_istream&operator>>(basic_istream& __in, signed char& __c){ return (__in >> reinterpret_cast(__c)); }
# 763 "/usr/include/c++/4.8.2/istream" 3templatebasic_istream<_CharT, _Traits>&operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);template<>basic_istream&operator>>(basic_istream& __in, char* __s);templateinline basic_istream&operator>>(basic_istream& __in, unsigned char* __s){ return (__in >> reinterpret_cast(__s)); }templateinline basic_istream&operator>>(basic_istream& __in, signed char* __s){ return (__in >> reinterpret_cast(__s)); }
# 794 "/usr/include/c++/4.8.2/istream" 3templateclass basic_iostream: public basic_istream<_CharT, _Traits>,public basic_ostream<_CharT, _Traits>{public:typedef _CharT char_type;typedef typename _Traits::int_type int_type;typedef typename _Traits::pos_type pos_type;typedef typename _Traits::off_type off_type;typedef _Traits traits_type;typedef basic_istream<_CharT, _Traits> __istream_type;typedef basic_ostream<_CharT, _Traits> __ostream_type;explicitbasic_iostream(basic_streambuf<_CharT, _Traits>* __sb): __istream_type(__sb), __ostream_type(__sb) { }virtual~basic_iostream() { }protected:basic_iostream(): __istream_type(), __ostream_type() { }};
# 854 "/usr/include/c++/4.8.2/istream" 3templatebasic_istream<_CharT, _Traits>&ws(basic_istream<_CharT, _Traits>& __is);
# 879 "/usr/include/c++/4.8.2/istream" 3}# 1 "/usr/include/c++/4.8.2/bits/istream.tcc" 1 3
# 37 "/usr/include/c++/4.8.2/bits/istream.tcc" 3# 38 "/usr/include/c++/4.8.2/bits/istream.tcc" 3namespace std __attribute__ ((__visibility__ ("default")))
{templatebasic_istream<_CharT, _Traits>::sentry::sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false){ios_base::iostate __err = ios_base::goodbit;if (__in.good())try{if (__in.tie())__in.tie()->flush();if (!__noskip && bool(__in.flags() & ios_base::skipws)){const __int_type __eof = traits_type::eof();__streambuf_type* __sb = __in.rdbuf();__int_type __c = __sb->sgetc();const __ctype_type& __ct = __check_facet(__in._M_ctype);while (!traits_type::eq_int_type(__c, __eof)&& __ct.is(ctype_base::space,traits_type::to_char_type(__c)))__c = __sb->snextc();if (traits_type::eq_int_type(__c, __eof))__err |= ios_base::eofbit;}}catch(__cxxabiv1::__forced_unwind&){__in._M_setstate(ios_base::badbit);throw;}catch(...){ __in._M_setstate(ios_base::badbit); }if (__in.good() && __err == ios_base::goodbit)_M_ok = true;else{__err |= ios_base::failbit;__in.setstate(__err);}}templatetemplatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::_M_extract(_ValueT& __v){sentry __cerb(*this, false);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const __num_get_type& __ng = __check_facet(this->_M_num_get);__ng.get(*this, 0, *this, __err, __v);}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::operator>>(short& __n){sentry __cerb(*this, false);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{long __l;const __num_get_type& __ng = __check_facet(this->_M_num_get);__ng.get(*this, 0, *this, __err, __l);if (__l < __gnu_cxx::__numeric_traits::__min){__err |= ios_base::failbit;__n = __gnu_cxx::__numeric_traits::__min;}else if (__l > __gnu_cxx::__numeric_traits::__max){__err |= ios_base::failbit;__n = __gnu_cxx::__numeric_traits::__max;}else__n = short(__l);}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::operator>>(int& __n){sentry __cerb(*this, false);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{long __l;const __num_get_type& __ng = __check_facet(this->_M_num_get);__ng.get(*this, 0, *this, __err, __l);if (__l < __gnu_cxx::__numeric_traits::__min){__err |= ios_base::failbit;__n = __gnu_cxx::__numeric_traits::__min;}else if (__l > __gnu_cxx::__numeric_traits::__max){__err |= ios_base::failbit;__n = __gnu_cxx::__numeric_traits::__max;}else__n = int(__l);}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::operator>>(__streambuf_type* __sbout){ios_base::iostate __err = ios_base::goodbit;sentry __cerb(*this, false);if (__cerb && __sbout){try{bool __ineof;if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))__err |= ios_base::failbit;if (__ineof)__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::failbit);throw;}catch(...){ this->_M_setstate(ios_base::failbit); }}else if (!__sbout)__err |= ios_base::failbit;if (__err)this->setstate(__err);return *this;}templatetypename basic_istream<_CharT, _Traits>::int_typebasic_istream<_CharT, _Traits>::get(void){const int_type __eof = traits_type::eof();int_type __c = __eof;_M_gcount = 0;ios_base::iostate __err = ios_base::goodbit;sentry __cerb(*this, true);if (__cerb){try{__c = this->rdbuf()->sbumpc();if (!traits_type::eq_int_type(__c, __eof))_M_gcount = 1;else__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }}if (!_M_gcount)__err |= ios_base::failbit;if (__err)this->setstate(__err);return __c;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::get(char_type& __c){_M_gcount = 0;ios_base::iostate __err = ios_base::goodbit;sentry __cerb(*this, true);if (__cerb){try{const int_type __cb = this->rdbuf()->sbumpc();if (!traits_type::eq_int_type(__cb, traits_type::eof())){_M_gcount = 1;__c = traits_type::to_char_type(__cb);}else__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }}if (!_M_gcount)__err |= ios_base::failbit;if (__err)this->setstate(__err);return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::get(char_type* __s, streamsize __n, char_type __delim){_M_gcount = 0;ios_base::iostate __err = ios_base::goodbit;sentry __cerb(*this, true);if (__cerb){try{const int_type __idelim = traits_type::to_int_type(__delim);const int_type __eof = traits_type::eof();__streambuf_type* __sb = this->rdbuf();int_type __c = __sb->sgetc();while (_M_gcount + 1 < __n&& !traits_type::eq_int_type(__c, __eof)&& !traits_type::eq_int_type(__c, __idelim)){*__s++ = traits_type::to_char_type(__c);++_M_gcount;__c = __sb->snextc();}if (traits_type::eq_int_type(__c, __eof))__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }}if (__n > 0)*__s = char_type();if (!_M_gcount)__err |= ios_base::failbit;if (__err)this->setstate(__err);return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::get(__streambuf_type& __sb, char_type __delim){_M_gcount = 0;ios_base::iostate __err = ios_base::goodbit;sentry __cerb(*this, true);if (__cerb){try{const int_type __idelim = traits_type::to_int_type(__delim);const int_type __eof = traits_type::eof();__streambuf_type* __this_sb = this->rdbuf();int_type __c = __this_sb->sgetc();char_type __c2 = traits_type::to_char_type(__c);while (!traits_type::eq_int_type(__c, __eof)&& !traits_type::eq_int_type(__c, __idelim)&& !traits_type::eq_int_type(__sb.sputc(__c2), __eof)){++_M_gcount;__c = __this_sb->snextc();__c2 = traits_type::to_char_type(__c);}if (traits_type::eq_int_type(__c, __eof))__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }}if (!_M_gcount)__err |= ios_base::failbit;if (__err)this->setstate(__err);return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::getline(char_type* __s, streamsize __n, char_type __delim){_M_gcount = 0;ios_base::iostate __err = ios_base::goodbit;sentry __cerb(*this, true);if (__cerb){try{const int_type __idelim = traits_type::to_int_type(__delim);const int_type __eof = traits_type::eof();__streambuf_type* __sb = this->rdbuf();int_type __c = __sb->sgetc();while (_M_gcount + 1 < __n&& !traits_type::eq_int_type(__c, __eof)&& !traits_type::eq_int_type(__c, __idelim)){*__s++ = traits_type::to_char_type(__c);__c = __sb->snextc();++_M_gcount;}if (traits_type::eq_int_type(__c, __eof))__err |= ios_base::eofbit;else{if (traits_type::eq_int_type(__c, __idelim)){__sb->sbumpc();++_M_gcount;}else__err |= ios_base::failbit;}}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }}if (__n > 0)*__s = char_type();if (!_M_gcount)__err |= ios_base::failbit;if (__err)this->setstate(__err);return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::ignore(void){_M_gcount = 0;sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const int_type __eof = traits_type::eof();__streambuf_type* __sb = this->rdbuf();if (traits_type::eq_int_type(__sb->sbumpc(), __eof))__err |= ios_base::eofbit;else_M_gcount = 1;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::ignore(streamsize __n){_M_gcount = 0;sentry __cerb(*this, true);if (__cerb && __n > 0){ios_base::iostate __err = ios_base::goodbit;try{const int_type __eof = traits_type::eof();__streambuf_type* __sb = this->rdbuf();int_type __c = __sb->sgetc();
# 521 "/usr/include/c++/4.8.2/bits/istream.tcc" 3bool __large_ignore = false;while (true){while (_M_gcount < __n&& !traits_type::eq_int_type(__c, __eof)){++_M_gcount;__c = __sb->snextc();}if (__n == __gnu_cxx::__numeric_traits::__max&& !traits_type::eq_int_type(__c, __eof)){_M_gcount =__gnu_cxx::__numeric_traits::__min;__large_ignore = true;}elsebreak;}if (__large_ignore)_M_gcount = __gnu_cxx::__numeric_traits::__max;if (traits_type::eq_int_type(__c, __eof))__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::ignore(streamsize __n, int_type __delim){_M_gcount = 0;sentry __cerb(*this, true);if (__cerb && __n > 0){ios_base::iostate __err = ios_base::goodbit;try{const int_type __eof = traits_type::eof();__streambuf_type* __sb = this->rdbuf();int_type __c = __sb->sgetc();bool __large_ignore = false;while (true){while (_M_gcount < __n&& !traits_type::eq_int_type(__c, __eof)&& !traits_type::eq_int_type(__c, __delim)){++_M_gcount;__c = __sb->snextc();}if (__n == __gnu_cxx::__numeric_traits::__max&& !traits_type::eq_int_type(__c, __eof)&& !traits_type::eq_int_type(__c, __delim)){_M_gcount =__gnu_cxx::__numeric_traits::__min;__large_ignore = true;}elsebreak;}if (__large_ignore)_M_gcount = __gnu_cxx::__numeric_traits::__max;if (traits_type::eq_int_type(__c, __eof))__err |= ios_base::eofbit;else if (traits_type::eq_int_type(__c, __delim)){if (_M_gcount< __gnu_cxx::__numeric_traits::__max)++_M_gcount;__sb->sbumpc();}}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatetypename basic_istream<_CharT, _Traits>::int_typebasic_istream<_CharT, _Traits>::peek(void){int_type __c = traits_type::eof();_M_gcount = 0;sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{__c = this->rdbuf()->sgetc();if (traits_type::eq_int_type(__c, traits_type::eof()))__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return __c;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::read(char_type* __s, streamsize __n){_M_gcount = 0;sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{_M_gcount = this->rdbuf()->sgetn(__s, __n);if (_M_gcount != __n)__err |= (ios_base::eofbit | ios_base::failbit);}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatestreamsizebasic_istream<_CharT, _Traits>::readsome(char_type* __s, streamsize __n){_M_gcount = 0;sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const streamsize __num = this->rdbuf()->in_avail();if (__num > 0)_M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));else if (__num == -1)__err |= ios_base::eofbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return _M_gcount;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::putback(char_type __c){_M_gcount = 0;this->clear(this->rdstate() & ~ios_base::eofbit);sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const int_type __eof = traits_type::eof();__streambuf_type* __sb = this->rdbuf();if (!__sb|| traits_type::eq_int_type(__sb->sputbackc(__c), __eof))__err |= ios_base::badbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::unget(void){_M_gcount = 0;this->clear(this->rdstate() & ~ios_base::eofbit);sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const int_type __eof = traits_type::eof();__streambuf_type* __sb = this->rdbuf();if (!__sb|| traits_type::eq_int_type(__sb->sungetc(), __eof))__err |= ios_base::badbit;}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templateintbasic_istream<_CharT, _Traits>::sync(void){int __ret = -1;sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{__streambuf_type* __sb = this->rdbuf();if (__sb){if (__sb->pubsync() == -1)__err |= ios_base::badbit;else__ret = 0;}}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return __ret;}templatetypename basic_istream<_CharT, _Traits>::pos_typebasic_istream<_CharT, _Traits>::tellg(void){pos_type __ret = pos_type(-1);sentry __cerb(*this, true);if (__cerb){try{if (!this->fail())__ret = this->rdbuf()->pubseekoff(0, ios_base::cur,ios_base::in);}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }}return __ret;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::seekg(pos_type __pos){this->clear(this->rdstate() & ~ios_base::eofbit);sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{if (!this->fail()){const pos_type __p = this->rdbuf()->pubseekpos(__pos,ios_base::in);if (__p == pos_type(off_type(-1)))__err |= ios_base::failbit;}}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&basic_istream<_CharT, _Traits>::seekg(off_type __off, ios_base::seekdir __dir){this->clear(this->rdstate() & ~ios_base::eofbit);sentry __cerb(*this, true);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{if (!this->fail()){const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,ios_base::in);if (__p == pos_type(off_type(-1)))__err |= ios_base::failbit;}}catch(__cxxabiv1::__forced_unwind&){this->_M_setstate(ios_base::badbit);throw;}catch(...){ this->_M_setstate(ios_base::badbit); }if (__err)this->setstate(__err);}return *this;}templatebasic_istream<_CharT, _Traits>&operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c){typedef basic_istream<_CharT, _Traits> __istream_type;typedef typename __istream_type::int_type __int_type;typename __istream_type::sentry __cerb(__in, false);if (__cerb){ios_base::iostate __err = ios_base::goodbit;try{const __int_type __cb = __in.rdbuf()->sbumpc();if (!_Traits::eq_int_type(__cb, _Traits::eof()))__c = _Traits::to_char_type(__cb);else__err |= (ios_base::eofbit | ios_base::failbit);}catch(__cxxabiv1::__forced_unwind&){__in._M_setstate(ios_base::badbit);throw;}catch(...){ __in._M_setstate(ios_base::badbit); }if (__err)__in.setstate(__err);}return __in;}templatebasic_istream<_CharT, _Traits>&operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s){typedef basic_istream<_CharT, _Traits> __istream_type;typedef basic_streambuf<_CharT, _Traits> __streambuf_type;typedef typename _Traits::int_type int_type;typedef _CharT char_type;typedef ctype<_CharT> __ctype_type;streamsize __extracted = 0;ios_base::iostate __err = ios_base::goodbit;typename __istream_type::sentry __cerb(__in, false);if (__cerb){try{streamsize __num = __in.width();if (__num <= 0)__num = __gnu_cxx::__numeric_traits::__max;const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());const int_type __eof = _Traits::eof();__streambuf_type* __sb = __in.rdbuf();int_type __c = __sb->sgetc();while (__extracted < __num - 1&& !_Traits::eq_int_type(__c, __eof)&& !__ct.is(ctype_base::space,_Traits::to_char_type(__c))){*__s++ = _Traits::to_char_type(__c);++__extracted;__c = __sb->snextc();}if (_Traits::eq_int_type(__c, __eof))__err |= ios_base::eofbit;*__s = char_type();__in.width(0);}catch(__cxxabiv1::__forced_unwind&){__in._M_setstate(ios_base::badbit);throw;}catch(...){ __in._M_setstate(ios_base::badbit); }}if (!__extracted)__err |= ios_base::failbit;if (__err)__in.setstate(__err);return __in;}templatebasic_istream<_CharT, _Traits>&ws(basic_istream<_CharT, _Traits>& __in){typedef basic_istream<_CharT, _Traits> __istream_type;typedef basic_streambuf<_CharT, _Traits> __streambuf_type;typedef typename __istream_type::int_type __int_type;typedef ctype<_CharT> __ctype_type;const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());const __int_type __eof = _Traits::eof();__streambuf_type* __sb = __in.rdbuf();__int_type __c = __sb->sgetc();while (!_Traits::eq_int_type(__c, __eof)&& __ct.is(ctype_base::space, _Traits::to_char_type(__c)))__c = __sb->snextc();if (_Traits::eq_int_type(__c, __eof))__in.setstate(ios_base::eofbit);return __in;}extern template class basic_istream;extern template istream& ws(istream&);extern template istream& operator>>(istream&, char&);extern template istream& operator>>(istream&, char*);extern template istream& operator>>(istream&, unsigned char&);extern template istream& operator>>(istream&, signed char&);extern template istream& operator>>(istream&, unsigned char*);extern template istream& operator>>(istream&, signed char*);extern template istream& istream::_M_extract(unsigned short&);extern template istream& istream::_M_extract(unsigned int&);extern template istream& istream::_M_extract(long&);extern template istream& istream::_M_extract(unsigned long&);extern template istream& istream::_M_extract(bool&);extern template istream& istream::_M_extract(long long&);extern template istream& istream::_M_extract(unsigned long long&);extern template istream& istream::_M_extract(float&);extern template istream& istream::_M_extract(double&);extern template istream& istream::_M_extract(long double&);extern template istream& istream::_M_extract(void*&);extern template class basic_iostream;extern template class basic_istream;extern template wistream& ws(wistream&);extern template wistream& operator>>(wistream&, wchar_t&);extern template wistream& operator>>(wistream&, wchar_t*);extern template wistream& wistream::_M_extract(unsigned short&);extern template wistream& wistream::_M_extract(unsigned int&);extern template wistream& wistream::_M_extract(long&);extern template wistream& wistream::_M_extract(unsigned long&);extern template wistream& wistream::_M_extract(bool&);extern template wistream& wistream::_M_extract(long long&);extern template wistream& wistream::_M_extract(unsigned long long&);extern template wistream& wistream::_M_extract(float&);extern template wistream& wistream::_M_extract(double&);extern template wistream& wistream::_M_extract(long double&);extern template wistream& wistream::_M_extract(void*&);extern template class basic_iostream;}
# 883 "/usr/include/c++/4.8.2/istream" 2 3
# 41 "/usr/include/c++/4.8.2/iostream" 2 3namespace std __attribute__ ((__visibility__ ("default")))
{# 60 "/usr/include/c++/4.8.2/iostream" 3extern istream cin;extern ostream cout;extern ostream cerr;extern ostream clog;extern wistream wcin;extern wostream wcout;extern wostream wcerr;extern wostream wclog;static ios_base::Init __ioinit;}
# 2 "test.c" 2
using namespace std;
int main()
{cout<<"孙浪,你好"<¨@@UH徿轈Ȩ¸]H䈃ꐉ}򸂽󧀽𾳞¿躾¿銃UH忿ÿ¿豿ÿÿ]ĥ­浪,你好GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-44)zRx 
b                                                                                                C
x=AC
PAC
'=Gd	                                                                                                                                                    V'[e֐玁&test.c_ZStL8__ioinit_Z41__static_initialization_and_destruction_0ii_GLOBAL__sub_I_main_ZSt4cout_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6__ZNSolsEPFRSoS_E_ZNSt8ios_base4InitC1Ev__dso_handle_ZNSt8ios_base4InitD1Ev__cxa_atexit񁀿ÿÿ 
񁀿ÿÿE
J񁀿ÿÿO
T
Y
^񁀿ÿÿd @'`d.symtab.strtab.shstrtab.rela.text.data.bss.rodata.rela.init_array.comment.note.GNU-stack.rela.eh_frame @yƄ&¹¹9@Θ J0֮Sc@                                30r[sunlang1@VM-12-13-centos dir]$ XshellXshellXshellXshell                                                                                                   
-bash: XshellXshellXshellXshell: command not found
[sunlang1@VM-12-13-centos dir]$ g++ test.o -o test
[sunlang1@VM-12-13-centos dir]$ cat test                                                                                                                    ELF>򄿀8	@@@@@88@8@@@|
|
`((/lib64/ld-linux-x86-64.so.2GNU GNUጪku$£棤ڐۂ!	(EԌ C ÒÿA´y󾅀°@7``libstdc++.so.6__gmon_start___ZNSt8ios_base4InitD1Ev_ZSt4cout_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6__ZNSolsEPFRSoS_E_ZNSt8ios_base4InitC1Evlibm.so.6libgcc_s.so.1libc.so.6__cxa_atexit__libc_start_mainGLIBC_2.2.5GLIBCXX_3.4󎟵i	t*򄀠`	` `(`0`8@`H`P`Hµ	 H󿿴.Ŀ5¢	 ÿ%¤	 @ÿ%¢	 h꡿ÿÿÿ%	 hꑿÿÿÿ%	 hꁿÿÿÿ%	 h鱿ÿÿÿ%     `H瀐]輿ÿÿ贿ÿÿUH.@¿``鑾ÿÿ¾󾅀HȨԾÿÿ¸]H䈃ꐉ}򸂽󧀽𾳞¿q`疾ÿÿ@¾q`¿°@碾ÿÿʃUH忿ÿ¿豿ÿÿ]¦.AWAÿAVI񀔉ԁTL%` UH-h SL)㲛H½覽ÿÿH첞L錉񄊿AÿۈAH9궪[]A\A]A^A_Ðf.A孙浪,你好D`󑱽ÿÿ`޾ÿÿ¸ÿÿÿׁÿÿÿ򁀿ѿÿÿ`zRx Rx J
b          ?;*3$"Dþÿÿ'AC
x$þÿÿ=AC
PþÿÿAC
D¤@þÿÿeBEE E(H0H8M@l8A0A(B BB멾ÿÿ°@@@ہ債                                                                                                                    @򿾯@¸@Ƃ@                                  8@
6 
`v@@@¦@¶@Ć@Ԇ@䅀GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-44)8@T@t@@Ƃ@¸@@.H@ 
x@ 8@ 
`򁕐`X``` @H	@                                                                                                                                            ܀'¬\`Nx`¾ڂ󾅀$\`~`@¢ 8@crtstuff.c__JCR_LIST__deregister_tm_clones__do_global_dtors_auxcompleted.6355__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entrytest.c_ZStL8__ioinit_Z41__static_initialization_and_destruction_0ii_GLOBAL__sub_I_main__FRAME_END____JCR_END____GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___init_array_end__init_array_start_DYNAMIC__libc_csu_fini__gmon_start___ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4__libc_start_main@@GLIBC_2.2.5__cxa_atexit@@GLIBC_2.2.5_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4_IO_stdin_used__data_start__TMC_END___ZSt4cout@@GLIB迃񿂘```\ ÿ0\-󿾆1anP+[sunlang1@VM-1su -^C
[sunlang1@VM-12-13-centos dir]$ ^C[sunlang1@VM-12-13-centos dir]$ ^Cr.dynamic.got.got.plt.data.bss.comment                                                                                   ʃ
[sunlang1@VM-12-13-centos dir]$ ^CÿÿzH@HBx@x8@8`@`򅁰@    ¨	@	D¶H	@H	󿾃 
[sunlang1@VM-12-13-centos dir]$ ^C
[sunlang1@VM-12-13-centos dir]$ ^C
[sunlang1@VM-12-13-centos dir]$ 

格式 gcc [选项] 要编译的文件 [选项] [目标文件]
预处理(进行宏替换)
预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
预处理指令是以#号开头的代码行。
实例: gcc –E hello.c –o hello.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。
编译(生成汇编)
在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查
无误后,gcc 把代码翻译成汇编语言。
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
实例: gcc –S hello.i –o hello.s
汇编(生成机器可识别代码)
汇编阶段是把编译阶段生成的“.s”文件转成目标文件
读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
实例: gcc –c hello.s –o hello.o
连接(生成可执行文件或库文件)
在成功编译之后,就进入了链接阶段。
实例: gcc hello.o –o hello
在这里涉及到一个重要的概念:函数库
我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而
没有定义函数的实现,那么,是在哪里实“printf”函数的呢?
最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到
系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函
数“printf”了,而这也就是链接的作用


函数库一般分为静态库和动态库两种。
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也
就不再需要库文件了。其后缀名一般为“.a”
动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时
链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态
库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc
hello.o –o hello
gcc默认生成的二进制程序,是动态链接的,这点可以通过 file 命令验证


三、附加功能

E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息。
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-O0
-O1
-O2
-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w 不生成任何警告信息。
-Wall 生成所有警告信息
 

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...