2004  5  27 ո


      Sun[tm] Studio 9C++ ļ


            Ŀ¼

       1. 
       2.  Sun Studio 9 C++  5.6
       3. Ժ͸ĵ
       4. 
       5. ͽ취
       6. ƺͲ
       7. ĵ
       8. ɷͿ
       9. δʵֵı׼

     

    ------------------------------------------------------------------------


            A. 

    ĵй Sun Studio 9 C++ 5.6 ϢĵУñ
    ҲΪ C++  5.6 档ĵ˱а汾һЩ¹ܣ
    а汾г֪⡢ƺͲԡĵ
    ϢºչֲеϢ

    Ʒĵ

        * Solaris ƽ̨ķ˵ͨ Sun Studio 9 վ
          http://developers.sun.com/tools/cc/documentation/ss9_docs/release_notes.html
          ô˷˵˵еϢºչļе
          Ϣ
        * Sun Studio 9 ĵƷֲҳļ HTML 汾Լֲ
          Դ /installation_directory/SUNWspro/docs/index.html з
          ʡȱʡװĿ¼Ϊ /optԴ index.html ҳĵ
              o C++ 
              o C++ ûָ
              o C++ Ǩļ
              o C++ Ǩָ
              o ׼ C++ ο
              o ׼ C++ ûָ
              o Tools.h++ 7.1.0 ļ
              o Tools.h++ ûָ
              o Tools.h++ ο
              o ļ
              o C++ ̲ο
              o ѧļ
              o ʱļ
              o ֵָ
              o ʽӱ༭ļ
              o CC (1) ֲҳ
              o 3C++ ֲҳ׼ C++ ⣩
              o 3CC4 ֲҳģʽ⣩
        * ɿ (IDE) ĵSun Studio 9 IDE 
           IDE е [] ˵зʡ
        * ԱԴŻйؼ¡ĵ֪ʶ⣬μ
          ԱŻַhttp://developers.sun.com/prodtech/cc

    Ҫ鿴ıʽļµ

           CC -xhelp=readme

    Ҫ鿴 HTML ʽļתȱʡװĿ¼

   file:/opt/SUNWspro/docs/index.html

    ע⡪ Sun Studio 9 δװȱʡ /opt Ŀ¼Уѯϵͳ
    ԱԻϵͳеĵȼ·

     

    ------------------------------------------------------------------------


            B.  Sun Studio 9 C++  5.6

    ˷а汾 C++ »УSolaris[tm] 
    (SPARC (R); ƽ̨) 汾 8汾 9 Ͱ汾 10Լ Solaris 
    (x86 ƽ̨) 汾 8汾 9 Ͱ汾 10

    C++  5.6 汾 5.0 浽 5.5 汾Դ뼶ͶƼݡҲ
    ˵ C++  5.5 ð汾 5.0  5.5 б
    Դ롣⣬Խ汾 5.0  5.5 ɵĿ C++ 
     5.6 ɵĿӵһӦȷʹµı
    ӣĿǰ°汾 5.6

    C++  5.6 ҲΪ 4.2 дԴбṩ -compat
    ѡ -compat ѡڰ汾 5.0 ״롣

     

    ------------------------------------------------------------------------


            C. Ժ͸ĵ

     C++ ¹ܺ͸Ĺܡй Sun Studio 9 
    ϢμܡֲᡣҪʴֲᣬת http://docs.sun.com

        * ͨΪ -xarch-xcode-xmemalign  -xprefetch ѡṩµ
		  ȱʡòͨΪ -O ѡṩµչܣܡ

        *  x86 ϵṹµ -xarch-xtarget  -xchip ־

        * ͨµ -xprefetch_auto_type  -sync_stdio ѡ
		  ʱܡ

        * ͨµ -xchip  -xtarget ־չ SPARC ֧֡

        * ʹ -xautopar-xvector-xdependѭŻ

        * ͨ -xpch ԶɵԤͷļ˱ʱܡ

        * ͨ -xrestrict ѡ extern INLINE ָʶ
		  ȱʡ֧֡

        * ͨ #pragma opt ָ -xmaxopt ѡŻ

        * ͨ -xustr ѡǿ UTF-16 ַ֧֡

     

    µ -xarch ȱʡֵv8plus

    ڣC++ Ϊɴȱʡϵṹ v8plus (UltraSPARC)
    İ汾н v7 ֧֡

    µȱʡֵΪǰʹõлṩߵʱܡȻ
    ڼƻԤװ UltraSPARC ϲӦóȱʡ½Щ
    ִСʹ -xarch=v8 б룬ȷӦóЩ
    ִС

     v8 ϵͳϽвÿԼκʱ
    ȷָѡ -xarch=v8ṩϵͳ v8 ϵṹС

     v7 ϵͳϽвÿԼκʱ
    ȷָѡ -xarch=v7ṩϵͳʹ v8 ָ Sun
    Studio 9 а棬v7 Ψһֵ֧Ĳϵͳ Solaris 8 а档 v8
    ָʱSolaris 8 ϵͳеָУܲ½

     x86 ƽ̨-xarch ȱʡֵΪ genericעx86 ƽ̨ϵ -fast 
    չ -xarch=native

     -xarch ĸϢμ C++ ֲҳ CC(1) C++ ûָϡ

    x86 ƽ̨µ -xarch-xtarget  -xchip 

    C++ ֧µ -xarch-xtarget  -xchip ǡЩ±
    ڽ Pentium 3  Pentium 4 оƬ Solaris ֽϣ֧
     x86 ƽ̨ϵ sse  sse2 ָµѡ£

        * -xchip=pentium3 Ϊ Pentium 3 ͵ĴŻ
        * -xchip=pentium4 Ϊ Pentium 4 ͵ĴŻ
        * -xtarget=pentium3  -xarch=sse-xchip=pentium3 
          -xcache=16/32/4:256/32/4
        * -xtarget=pentium4  -xarch=sse2-xchip=pentium4 
          -xcache=8/64/4:256/128/8
        * -xarch=sse  SSE ָӵ pentium_pro ָС
        * -xarch=sse2 Щ SSE ָ SSE2 ָ

          رע
           -xarch={sse | sse2} Ա Solaris x86 SSE/SSE2 Pentium
          4 ƽ̨еĳֻ SSE/SSE2 ƽ̨Сδ
           SSE/SSE2 ƽֳ̨ܻᵼ¶ιϻ߲ȷ
          ϢͲϵͳͱĲɷֹ
          SSE/SSE2 ĶƳδ SSE/SSE2 ƽִ̨УЩ
          ܻЩʱṩ

           Solaris 9 update 6 ͷĲϵͳ汾 Pentium 4 ƽ̨
           SSE/SSE2Solaris OS ڰ汾δ SSE/SSE2

          þ滹չ .il Թܳ SSE/SSE2 ָ
           __asm() 롣

          ڸĲнбӣҪʼʹñͨ
           -xarch={sse | sse2} ӣȷȷ̡

    ׼ȷ -xchip-xtarget  -xarch ѡĸϷ
    Ҫ

        * Ƿ Solaris 9 update 5 Ͱ汾 Pentium 3 
          Pentium 4 ϽйǷָ -fast-xarch=
          native  -xtarget=native

          չ

              o -xarch Ϊ pentium_pro pentium3 
                pentium4Ϊ Solaris 9 update 5 Ͱ汾Ĳϵͳ
                ֧ SSE  SSE2 ָ

                ע⣺ ʹʹЩ汾 Solaris Ҳָ
                -xarch=sse  -xarch=sse2 Solaris 9 update
                6 ߰汾ļӦ汾ṩĿִļΪ
                Щ汾 Solaris ֧ SSE  SSE2 ָ

              o Ҫ -xchip Ϊ pentium3  pentium4
              o -xcache Ϊ 16/32/4:256/32/4 Pentium 3 
                 8/64/4:256/128/8 Pentium 4 

        * Ƿ Solaris 9 update 6 ߰汾 Pentium 3 
          Pentium 4 ϽйǷָ -fast-xarch=
          native  -xtarget=native

          չ

              o -xarch Ϊ sse Pentium 3 sse2 Pentium
                4
              o Ҫ -xchip Ϊ pentium3  pentium4
              o  Pentium 3 -xcache Ϊ 16/32/4:256/32/4
                Pentium 4Ϊ 8/64/4:256/128/8

     -xarch-xtarget  -xchip ĸϢμ C++ ֲҳ CC(1)
    C++ ûָϡ

    µ -O չ

    SPARC  x86-O չ -xO3 -xO2

    ȱʡ£Ľߵʱܡǣ-x03 ܲʺЩ
    бԶΪ volatile ĳ򡣿ܾд˼ĵͳʵ
    ͬԪ豸ͽϾɵĶ߳Ӧó취ʹ
    -xO2  -O б롣

     -O ĸϢμ C++ ֲҳ CC(1) C++ ûָϡ

    µ -xprefetch ȱʡֵ

    (SPARC) ڣ-xprefetch ȱʡֵ -xprefetch=auto,explicit˸
    ԱΪڴģʽɲӰ졣ҪøĹܣָ
    -xprefetch=no%auto,no%explicit

     -xprefetch ĸϢμ C++ ֲҳ CC(1) C++ ûָϡ

    µ -xmemalign ȱʡֵ

    (SPARC) е v8 ϵṹ-xmemalign ȱʡֵΪ -xmemalign=
    8i v9 ϵṹȱʡֵΪ -xmemalign=8s

     -xmemalign ĸϢμ C++ ֲҳ CC(1) C++ ûָϡ

    µ -xcode ȱʡֵ

    (SPARC) V9 ϵȱʡֵΪ -xcode=abs44V8 ϵȱʡֵ -xcode=
    abs32 x86 ƽ̨ϲ֧ xcode

    ע⡪ v9ڹĴʹȱʡ -xcode=abs44
    汾ĹΪضλʧܡ -xcode=abs64 ѡб
    룬λ޹صĴ룬 -xcode=pic13  -xcode=pic32

     -xcode ĸϢμ C++ ֲҳ CC(1) C++ ûָϡ

    µ -xchip  -xtarget 

    (SPARC) ڣ-xchip  -xtarget ѡ֧ ultra3i  ultra4 Ϊ
    ֵԹΪ UltraSPARC IIIi  UltraSPARC IV 
    Ӧó

    ⲿ

    C++ ׼ָΪ̬һⲿ
    ӡC++ 5.6 ״ȱʡΪṩⲿӡ벻ʹ
    磬Ҫĵַֻһӵ
    ճǰҪÿĿļԼбӵĸ

     Extern ʵڰ汾ıĶļݣ
    ĳ˵Ϊͬǰһϱ׼ɵĶļ
    ĶظµĴ뽫ֻһ Extern ĸ

    ʹñа汾 C 5.6 ⲿʵ C99 汾
    ݡѭⲿ C  C++ 򣬿 C 
    C++ ļжͬҸⲿֻһ
    С

    ֮һֲݣΪ C ֧֣ṩⲿ
    壩C++ ûָϽᵼ
    󡣿ʾ

               //File a.h
               #ifdef __cplusplus
               extern "C" {
               #endif
               inline int f() { return 1; }
               #ifdef __cplusplus
               }
               #endif

               //File b.c
               #include "a.h"
               int g() { return f(); }

    ļ b.c У f һ֧֣ûָ֧
    

               //File c.c
               int f() { return 1; }

     c.c  f  C++ ʹûϣʾͻӳ
    á塱ĴϢ

               //File d.cc
               #include "a.h"
               int h() { return f(); }

    Ǹ C ˵ f ֧ʹ c.c ʵʩ

               //File c.c
               #include "a.h"
               extern inline int f();

    ʹ -xautopar-xvector  -xdepend ѭŻ

    ڿʵֲмѭŻC++ ֧ѡЩѡ
    Ż -xO3 ߡ

        * -xautopar
        * -xvector
        * -xdepend

    йϸϢμ C++ ֲҳ CC(1) й -xautopar-xvector 
    -xdepend ˵

    ͨ -xrestrict Ƶָ

    C++ ֧ C99  restrict ؼ֡ C++ ڽ C 
    ѡ -xrestrict

    ѡеĺָ͵ĺͬĻصĶ
    Ӱ졣ѡ C++ еΣԱ C иΪͷļж
    ܲΪ True

    йϸϢμ C++ ֲҳ CC(1) й -xrestrict ˵

    ͨ #pragma opt  -xmaxopt Ż

    Խ #pragma opt ָѡ -xmaxopt һָ
    ӦڸŻ

    磬Ϊ˱ջ֡ĴǿҪضŻ
    ʱΪضŻʱϷǳá

    йϸϢ C++ ֲҳ CC (1) й -xmaxopt ˵

    ͨµ -xprefetch_auto_type ѡĽʱܡ

    ʹµ -xprefetch_auto_type ѡֱܹڴԤȡͬ
    ʽΪѡ -xprefetch_level=[1|2|3] ָʾѭɼԤȡ

     -xalias_level ѡԸĽ -xprefetch_auto_typeŻ
    ǽӰԤȡѡļȣӶӰԶԤȡ
    ļȣΪɸ׼ȷڴϢ

     -xprefetch_auto_type ѡĸϢμ CC(1) ֲҳC++
    ûָϡ

    ͨµ -sync_stdio ѡʱܡ

    ʱܲõһԭ C++ iostreams  C stdio ͬͬ
     C++ ׼Ҫģȱʡͬǣ
    ָͨ -sync_stdio=no ͬ

     -sync_stdio ѡĸϢμC++ ûָϡ CC(1) ֲ
    ҳμ C++ ʴԻȡйظۡ

    ͨ -xustr ǿ UTF-16 ֧

    5.5 汾 C++ ˶ UTF-16 ֵַ֧֡аչ
    ˶ UTF-16 ֵַ֧֣ UTF-16 ַʹõ﷨ U'x' 
     U"x" ﷨ơҪͬ -xustr ѡ֧ UTF-16 ַʶ

    а汾Ҳ֧ UTF-16 ַַֺеֻ룬ֻ
    ַַֺͨеֻơ磺

               U"ab\123ef" // ڰ˽бʾַ
               U'\x456'    // ʮбʾַ

    йϸϢμ C++ ֲҳ CC(1) й -xustr ˵

    ʹ -xpch ԶԤͷļ

    а汾 C++ ԤͷļչΪһԶ
    ܣܹԤͷļԿѡֶԤͷļ
    Ա¹ܸȤμ CC(1) ֲҳй -xpch ѡ˵
    ˽Ϣμ CCadmin(1) ֲҳ

     

    ------------------------------------------------------------------------


            D. 

    ڽ

       1. ʮĽ
       2. ԣ캯ûߺָ
       3.  Solaris 8  update 2 Ͳ __ctype δ
          
       4. ģ֧־̬ -instance=static 
          -instance=semiexplicit
       5. Extern ĺֲ̬ĲͬΪ
       6. ٺģ﷨

       1. ʮĽ

          C++ ׼ָûк׺ʮ int ֵ
           int Ļͱ long int ֵ long
          intͲȷ

           32 λģʽУint  long ͬĳߴݷΧC++ 
          ѭ 1990 C ׼򣬽 INT_MAX+1  LONG_MAX ֵ֮
          ŵ long ִĳЩлĽ

          1999 C ׼й޺׺ʮĹǾԶ
          ޷ʹ intlong  long long еһ
          Դֵ͡

          C++ 5.6 ڱ׼ģʽѭ C99 򣬵 -compat=4 ģʽм
          ѭ C90 򡣣 -compat=4 ģʽУΪ C++ 4.2
          

          ϣʮ޷ţ򷽱Ľʹ
          u  U ׺ͬԶʹ׺磺

                 // note:2147483648 == (INT_MAX+1)
                 2147483648     // (signed) long long
                 2147483648LL   // (signed) long long
                 2147483648U    // same as 2147483648u

       2. ԣ캯ûߺָ

          ĳЩ C++ пܽͳ߱ʽC++ ԹΪ
          һԴô

          ڰ汾ıĴ룺

                 struct S {
                 S();
                     };
                 struct T {
                 T( const S& );
                     };
                 T v( S() );    // ???

          Ҳһж vΪ S ʱ
          гʼڰ汾ı䡣

          šS()Ҳɱȡʶ
          ʾĺֵ S£
          Զתɺָ롰S(*)()伴Ϊ v 
          úһָ͵ĲֵΪ T

          ǰ汾ıڿȷ͸䣬δǱҪ
          Ľ

          ޸ķʹĴûжԣ

                 T v1( (S()) );  // v1 ǳʼ
                 T v2( S(*)() ); // v2 һ

          һӵǶʹ v1 ǺΪ﷨
          ЧΨһǡΪ S ʱֵгʼΪ
          T Ķ󡱡

          ͬšS(*)()ҲֵΨһǺ

          һҲԸдΪ

                 T v1 = S();

          Ȼʱ京ǳʽĳʼᵼ´һ
          ʱһⲻᷢ

          鲻ҪдƵĴ룬Ϊĺ岻ͬı
          ֲܻͬĽ

                 T v( S() ); // 

       3.  Solaris 8  update 2 Ͳ __ctype
          δ

           Solaris 8 ϵͳһʹ <stdlib.h> 
          MB_CUR_MAXC++ ֡__ctype δ󡱡

          Solaris 8 update 2 ϵͳѾ󡣴 Solaris 
           109607-01(SPARC)  109608-01 (x86) Իȡø

          ûаװ³򲹶һʱ취ڰͷļ
          <stdlib.h> ֮ǰ׼ͷļ <ctype.h> Ҳ

       4. ģ֧־̬ -instance=static  -instance=semiexplicit

          ڰ汾 C++ ֧ģо̬ľ̬ʵͰ
          ʽʵ C++  5.2  5.6 汾вڴơ

       5. Extern ĺֲ̬ĲͬΪ

           ARM ⲿĺֲ̬ļ̬ġ
           ISO ׼ⲿĺֲ̬ܹڶ
          Ԫ֮乲ȫֱ

          C++  5.0  5.1 汾ڼģʽ (-compat) ͱ׼ģʽ
          ȱʡģʽʵ ARM Ϊ C++  5.2 
          5.6 汾ڼģʽʵ ARM Ϊڱ׼ģʽʵ
           ISO Ϊ磬

               one.cc

               inline int inner() {
               static int variable = 0; return variable++;
                   }
               int outer() { return inner(); }

               two.cc

               inline int inner() {
               static int variable = 0; return variable++;
                   }
               int main() { return inner() + outer(); }

          Լģʽ (-compat) ʱֵͬ main 
          ؽ 0㣩

          ڱ׼ģʽȱʡģʽ±ʱֵͬ main
          ķؽ 1һҪڱ׼ģʽµõǰĽӦ
          Ϊ̬

       6.


                    ٺģ﷨

          ģ﷨ǷǷģ Sun C++  4  5.0 汾
          ڱ׼ģʽȱʡģʽ C++  5.1  5.6 
          ᱨ﷨

               template<class T> class MyClass<T> { ...}; // definition error
               template<class T> class MyClass<T>;         // declaration error

          £MyClass<T>еġ<T>Ч뽫ɾ
          ʾ

               template<class T> class MyClass { ...}; // definition
               template<class T> class MyClass;         // declaration

     

    ------------------------------------------------------------------------


            E. ͽ취

    ֪⼰ܵĽڸºͲ
    ϢַΪ
    http://developers.sun.com/prodtech/cc/support_index.html

       1.  -xipo  -xcrossfile  -instances=static ʱʧ
       2. Ԥ .i ļ
       3. Ӵ
       4. 
       5. ԹߴرԱжǰ
       6. ֧öģеķȫƿռ
       7. ƿռڵ #pragma align Ҫ
       8. ؽ
       9.  Solaris 8 ϵͳеʹ˽̵߳Ķ߳ C++ ʱ
          

       1.  -xipo  -xcrossfile  -instances=static ϣ
		  ʧ

          ģѡ -instances=static -pto -xcrossfile  -xipo
          ѡʱʹøϵĳᾭʧܡ

          ʹ -xcrossfile  -xipo ѡʹȱʡģģ
          -instances=global

          ͨҪʹ -instances=static -ptoκκ
          ȴ C++ ûָ ȱ㡣

       2. Ԥ .i ļ

          __global  C++ 5.5 Ĺؼ֣µ xldscope ѡ
          һ֡ʹþɰıһԤļһ
           .i ļȻʹð汾 5.5  5.6  .i ļؼ
           __global ڸ .i ļʶᱨϢ

          ʱһǣڸ .i ļʼ #pragma
          disable_ldscopeΪɰдģͲõ
          ؼ֣ __globalļ
          Խ #pragma enable_ldscope ӵ .i ļĩβ

       3. Ӵ

          ִ -xlang=f77 ̻һӴΪ˱
          󣬲ȻʹӦп⣬Ӧִ
          -xlang=f77,f90

       4. 

          ᵼ⡣

              * һطΪһһطΪ
                һǳ

                ʾ

               void foo1(const int);
               void foo1(int);

                ǶԵȵģʱȴ᲻ͬ
                ҪͲֵܽΪ const磬κ
                طʹ void foo1(int);ú塣

              * ͬ͵Ĳֻһ
                typedef ġ

                ʾ

               class T;
               typedef T x;
               // foo2 has composite (that is, pointer or array)
               // parameter types
               void foo2(T*, T*)
               void foo2(T*, x*);
               void foo2(x*, T*);
               void foo2(x*, x*);

                е foo2 ǶԵȵģӦ𻵳ͬơȻ
                ԲвͬĴΪ˱⣬Ӧ
                ͳһʹ typedefs

                ޷ͳһʹ typedefsһʱڶ
                ļʹţʹ뺯Ķһ¡磺

                #pragma weak "__1_undefined_name" = "__1_defined_name"

                ע⡪ĳЩĿϵṹ磬 SPARC V9
                ϵṹУ size_t  unsigned longϵṹ
                 unsigned int£ͻ汾
                ƣֱӦģʽʱʹ pragma
                 #if ָпơ

          йظϢμC++ ǨָϡҪ鿴 HTML ʽıָϣ
          ʹ file:/opt/SUNWspro/docs/index.html
          <../../index.html>

          ע⡪ Sun Studio 9 ͹δװȱʡ /opt Ŀ¼
          ѯϵͳԱ˽ϵͳеʵʰװ·

       5. ԹߴرԱжǰ

          ڼģʽ (-compat) £C++ ԳԱָ
          д𻵴ᵼ demangler ԼһЩԹ
          ߣ dbx  c++filtóԱжǰ
          ԸóԱáΪ˱⣬Ҫ -Qoption
          ccfe -abiopt=pmfun1 ǡҪעǣǵԴ
          ܻûдǵԴڶƼݡڱ׼ģ
          ʽȱʡģʽ£ƵĴ⡣

       6. ֧öģеķȫƿռ

          ʹģ;̬ĳδŵʱ󡣱
          Ŀǰвֶ֧Զģеķȫƿռá
          ʾ

               static int k;
               template<class T> class C {
               T foo(T t) { ... k ... } }
               };

          УһģĳԱ˾̬ƿռеı
          סƿռļ򡣱֧ģĳԱþ̬
          ƿռı⣬ģı뵥Ԫʵôÿʵ
          ָͬ kƻ C++ һι򣬴Ϊ
          Ԥ⡣

          ķҲǿеģʹ kԼӦеĹ
          ܡڶѡɹԱĺģʹá

             1. ʹⲿԣ

               int k; // not static

                еʵʹͬһ k
             2. ҲʹΪľ̬Ա

               template<class T> class C {
               static int k;
               T foo(T t) { ... k ... } }
               };	

                ̬Աⲿԡÿһ C<T>::foo ʵʹ
                ͬ k C<T>::k һʵԱ
                ѡҲҪġ
             3. ʹкֲԣ

               template<class T> class C {
               T foo(T t) { static int k; ... k ... } }
               };

                ÿһ C<T>::foo ʵʹԼ k ںⲻ
                ɼ

       7. ƿռڵ #pragma align Ҫ

          ƿռʹ #pragma align ʱʹơ磬
          ĴУ#pragma align 䲻κáҪ
          ⣬Ӧ ab  c ƴ #pragma align 
          Ķ塣

               namespace foo {
               #pragma align 8 (a, b, c) // has no effect
               //use mangled names:
               #pragma aling 8 (__1cDfooBa_, __1cDfooBb_, __1cDfooBc_)
               static char a;
               static char b;
               static char c;
                 }

       8. ؽ

          ڷа汾 C++ ֧ C++ ׼Ҫĺءǰ
          а汾˵غʱֵĺܶ󡣾
          óֶʱᱨûжԵ£
          ᾯõжԡ

          ʱĶϢѾûбҪˡҲ
          ǰûе¶Դ

          ºöԵһҪԭǽһ͡

   
               int f1(short);
               int f1(float);
               ...
               f1(1); // ambiguous, "1" is type int
               f1(1.0); // ambiguous, "1.0" is type double

          Ϊ˽⣬Ҫôȫ f1Ҫôûн
          ͣintunsigned intlongunsigned long Լ double
          Ҳ long longunsigned long long Լ long double

          һҪԭеתرʱ

               class T {
               public:
               operator int();
               T(int);
               T operator+(const T&);
               };
               T t;
               1 + t // ambiguous

          жΪܱɣ

               T(1) + t     // overloaded operator
               1 + t.operator int()    // built-in int addition

          ṩҲṩתͬʱṩǾͻ
          ɶԡ

          ʵϣתҲᵼ¶ԣڲӦ
          תĵطתȷʵҪתʹƵĺ
          Ҫʹת磬ʹ int to_int(); 
          operator int();

          ޸ĺ1 + t ͲپжˡֻܽΪ
          T(1) + tϣĽͣд
          1 + t.to_int()

       9.  Solaris 8 ϵͳеʹ˽̵߳Ķ߳ C++ ʱ
	      

           Solaris 8 ϵͳе /usr/lib/lwp/ еı̹߳
          ߳ C++ ʱ32 λ߳ C++ ʱ
          ָ -R /usr/lib/lwp dbx ʱҲ64 λ߳ C++
          ʱָ -R /usr/lib/lwp/sparcv9Ҳпܻ
          ʹʱʱ

          ֻԱ׼ģʽȱʡָ -compat=5 ѡ
           C++ 룻ԼģʽĴ루ָ -compat
          ѡ

          ʹñ߳̿ܵȱʡ߳̿Զ
          ̳߳Ȼʹñ߳̿⡣

          ֻ Solaris 8 з

     

    ------------------------------------------------------------------------


            F. ƺͲ

    ϵͳƺͲݡйظ÷а汾 Sun ONE Studio
    9 ϢμSun Studio 9 ˵˵ Sun Studio
    9 վҵַǣhttp://developers.sun.com/prodtech/cc/ss9/reference/docs/releasenotes.pdf
    ˵еϢºչļеϢ

       1. -xia  -library=stlport4 ֮䲻

          ܺ STLport C++ һͬʹ C++ ѧ⡣ֻܰաC++ 
          ̲οе˵ʹ -xia ѡĳ

       2. C++ ⲹ

          ÿ Solaris 汾Ӧ SUNWlibC Sun
          Studio 9 а汾Ϊÿֵ֧ƽ̨ṩ˲
          򲻽ҪװбϵͳҪװгϵ
          ͳûЩЩ᲻ܽӣЩΪ
          ʱ磬ҲᱨϢ

          Undefined symbol First referenced in file
          std::ostream &operator<<(std::ostream&,const RWCString&) test.o

          ld:fatal:Symbol referencing errors.No output written to test

          ҲῴĴϢ

          Hint:try checking whether the first non-inlined,
          non-pure virtual function of ... 
      

          йظ Sun Studio 9 汾ıͿѡϢμ Sun
          Studio 9 վַΪ http://developers.sun.com/prodtech/cc/support_index.html

       3. 汾

          ڵ C++  4.0 汾4.1 汾4.2 汾Լ
          汾֮Ĳԣ

                  * Sun WorkShop C++ (5.0) 
                  * Forte Developer 6 C++ (5.1) 
                  * Forte Developer 6 update 1 C++ (5.2) 
                  * Forte Developer 6 update 2 C++ (5.3) 
                  * Forte Developer 7 C++ (5.4) 
                  * Sun Open Net Environment (Sun ONE) Studio 8 C++
                    (5.5) 
                  * Sun Studio 9 C++ (5.6) 

             1. 汾Ĳһ¿ܵ±
             2. C++ ӿڲ
             3. ʹ Tools.h++
             4. ʹöģ⣻ -ptr ѡ
             5. ָ const Աָ 4.0.1 Libraries 
                
             6. ڰ汾ɵĿ
             7. Բͬ汾ĻĿ
           
           
             1. 汾Ĳһ¿ܵ±

                ıʱÿ SunWS_cache Ŀ¼Ŀ¼
                 CCadmin -cleanҲʹ rm -rf
                SunWS_cacheᵼı

                    * SunWS_cache:Error:Database version mismatch
                      <path>/SunWS_cache/CC_version.


                    * "<path>/SunWS_cache/CC_state",
                      line 3:Error:"" not allowed here.** Assertion ** : 0


             2. C++ ӿڲ

                C++ 汾 5.0  5.6  4.04.1 Լ 4.2 ڶ
                ݣʹ 5.0  5.6 ʱָ -compat ѡ
                ಼֡˳Լʵ ANSI/ISO C++ Ҫ
                𻵵ĸı䵼µġ

                5.0  5.6 汾 C++ ڶƼݡ

                йظϢμC++ ǨָϡҪ鿴 HTML ʽı
                ĵʹ
                file:/opt/SUNWspro/docs/index.html <../../index.html>
                Solaris ƽ̨ϵȱʡװĿ¼ /optûȱʡ /opt
                Ŀ¼аװ Sun Studio 9 ѯϵͳԱ˽ϵͳ
                еʵʰװ·

             3. ʹ Tools.h++

                C++ ȱʡʱʹñ׼ iostreamsڱ׼ģʽʹ
                 Tools.h++ָ -library=rwtools7_std ѡ
                 libiostreamʾ

example% CC -library=rwtools7_std foo.cc -> uses standard iostreams
example% CC -library=rwtools7,iostream foo.cc -> uses classic iostreams

                Ȼڼģʽ£ָ -compat ѡִ
                -library=rwtools7_stdΪûпõı׼⣺

example% CC -compat foo.cc -library=rwtools7 -> compatibility mode, standard 
library not available

                Ҫ -library=stlport4 һָ -library=rwtools7-
                library=rwtools7_dbg-library=rwtools7_std 
                -library=rwtools7_std_dbgTools.h++ ֧ STLport

                ѡ -library=rwtools7_std  -library=rwtools7
                iostream ɵĶƴ벻ݡʹЩѡеһ
                Ӧýÿ CC ͬѡڱӡ

                йظϢμC++ ǨָϡҪ鿴 HTML ʽı
                ָϣʹ
                file:/opt/SUNWspro/docs/index.html <../../index.html>
                Solaris ƽ̨ϵȱʡװĿ¼ /optûȱʡ /opt
                Ŀ¼аװ Sun Studio 9 ѯϵͳԱ˽ϵͳ
                еʵʰװ·

             4. ʹöģ⣻ -ptr ѡ

                ע⡪ȱʡ²ٴģ洢⡣ʽָ
                -instances=extern ʹ洢⡣

                 C++  5.0 汾ǰ -ptr Ϊģʵָ
                ⡣ 5.0  5.6 汾Уʹ -ptr ǣΪϵ
                ͳԴĶļӦģȡҲԽģʵ
                д CC ָλðĿ⡣

                 5.5  C++  -ptr ѡϡڱ
                -ptr ѡȻԸѡӦôеı
                ɾ -ptr ΪҲµķаֻµΪ
                ԡ

                ע⡪ǰ汾֧ڶӦó߿乲һģ
                ⣬ǰ汾Ҳ֧֡ͼΪģظ
                ±ԼʱԤ֪ĽйظϢ
                μC++ ûָϡ

                Ҫ鿴 HTML ʽıָϣʹ
                file:/opt/SUNWspro/docs/index.html <../../index.html>
                Solaris ƽ̨ϵȱʡװĿ¼ /optûȱʡ /opt
                Ŀ¼аװ Sun Studio 9 ѯϵͳԱ˽ϵͳ
                еʵʰװ·

             5. ָ const Աָ 4.0.1 Libraries 

                4.0.1  C++ Ϊ const Աָɵ
                4.14.2 Լ 5.0  5.6  C++ Ķһ
                ʹ汾ıҲ 4.0.1 ɵġ
                ƵĿӣӦҪô±⣬Ҫôڱ
                ʱʹ -compat -Qoption ccfe -abirel=4.0.1 ѡ

                ע⡪Ժķа汾Ҳ֧ -abirel=4.0.1 ѡ

             6. ڰ汾ɵĿ

                ⲿCģʵʶ C++ 4.0.1  C++ 4.1
                ɵơµĽǵԹ߻
                ⣬Щûܽ 5.0  5.6 ɵĿ
                ļڱɵĿӡֲԵĿ
                ԼСһ֣Բȡַ֮һд

                    * ʹ Sun Studio 9 C++ (5.6) ±
                    * ʹ Sun Studio 9 C++ (5.6) µĿ
                      ͬʱָ -compat  -Qoption ccfe -abirel=4.1
                      ǡ

                ע⡪Ժķа汾Ҳ֧ -abirel=4.1 ǡ

             7. Բͬ汾ĻĿ

                ͬһнԲͬ C++ Ŀ
                ǰǲܽģʽͱ׼ģʽĴϡȻ
                ӽյĳʱʹڸûϰ汾е±

                ע⡪ 4.2 ͱ׼ģʽ C++ 롣

     

    ------------------------------------------------------------------------


            G. ĵ

    ĿǰûµϢ

    ------------------------------------------------------------------------


            H. ɷͿ

        * ִļʹļе Sun ̬⣬ô֤
          оͰ˽·ַͻȨ

          /opt/SUNWspro/READMEs/runtime.libraries

          ע⡪δ Sun Studio 9 װ /opt Ŀ¼Уѯϵͳ
          Ա˽ϵͳеʵʰװ·

          κʽ·ַ͸©ģͷļԴ롢ģ
          ͻ̬⡣

          ʹ֤ڡû֤У CD-ROM 
          ϰװб濴

        * ϣʹ libCstd / libiostream Ĺ汾
          ѡ
             1. ĲƷһַ SUNWlibC 
             2. ҪĿͻ Sun վµ SUNWlibC 
                ַΪ http://www.sunsolve.sun.comѵģ
                ·ַ

          ǰһѡ̬һ⣬ûЩҪ
          ˡҪȷĳڲͬ汾Ĳϵͳϵļԣ빲
          ӡ

     

    ------------------------------------------------------------------------


            I. δʵֵı׼

        * C++ ֧ ISO C++ ׼ISO IS 14882:1998 C++
          г˱׼Ҫǰа汾ֵ֧Ĺܣ

              o ģĲгְзģıʽ

                template<int I> void foo(mytype<2*I> ) { ... } }

              o ģģ廯Ϊʽģģ壩

              o ַͨ

              o ģģʽ

        * Ϊ˱ֵǰ C++ а汾汾ļԣЩ
          libCstd ûʵ֡йظϢμ C++ 
          ӣַΪ file:/opt/SUNWspro/docs/index.html
         
          ûȱʡ /opt Ŀ¼аװ Sun Studio 9 ѯϵͳԱ
          ˽ϵͳеʵʰװ·

     

    ------------------------------------------------------------------------

    Ȩ (c) 2004 Sun Microsystems, Inc. Ȩ
	֤ʹá

