• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Zero Lee的專(zhuān)欄

            頭文件中的名稱(chēng)

            資料整理于《大規(guī)模C++程序設(shè)計(jì)》???
            ???在頭文件的文件作用域中聲明的名稱(chēng),可能潛在地與整個(gè)系統(tǒng)中任何一個(gè)文件的文件作用域名稱(chēng)沖突。即使在一個(gè).cpp文件的文件作用域中聲明的帶有內(nèi)部連接的名稱(chēng)也不能保證一定不與.h文件的作用域名稱(chēng)沖突。
            ???主要設(shè)計(jì)規(guī)則:只有類(lèi)、結(jié)構(gòu)、聯(lián)合和自由運(yùn)算符函數(shù)應(yīng)該在.h文件作用域內(nèi)聲明;只有類(lèi)、結(jié)構(gòu)、聯(lián)合和內(nèi)聯(lián)函數(shù)成員或(內(nèi)聯(lián))自由運(yùn)算符應(yīng)該在.h文件的作用域內(nèi)定義。
            ???以下代碼段闡述了上述設(shè)計(jì)規(guī)則。

            ?1 // ?Driver.h????????????????????? // ?fine:comment
            ?2 #ifndef?INCLUDED_DRIVER????????? // ?fine:internal?include?guard
            ?3 #define ?INCLUDED_DIRVER
            ?4
            ?5 #ifndef?INCLUDED_NIFTY?????????? // ?fine:redundant?include?guard

            ?6 #include? " nifty.h "
            ?7 #endif
            ?8
            ?9 #define ?PI?3.141592????????????? // ?Avoid:macro?constant

            10 #define ?MIN(X)?((X)<(Y)?(X):(Y))? // ?Avoid:macro?constant
            11
            12 class ?ostream;??????????????? // ?fine:?class?dec.

            13 struct ?DriverInit;??????????? // ?fine:?class?dec.
            14 union?Uaw;??????????????????? // ?fine:?class?dec.
            15
            16 extern ? int ?globalVariable;? // ?Avoid:external?data?dec.
            17 static ? int ?fileScopeVariable;? // ?Avoid:internal?data?def.
            18 const ? int ?BUFFER_SIZE? = ? 256 ;? // ?Avoid:const?data?def.
            19 enum ?Boolean? {?zero,?one?} ;?? // ?Avoid:enumeration?at?file?scope
            20 typedef? long ?BigInt;????????? // ?typedef?at?file?scope
            21
            22 class ?Driver? {
            23 ??? enum ?Color? {?RED,?GREEN?} ;? // ?fine:enumeration?in?class?scope
            24 ???typedef? int ?(Dirver:: * PMF)();? // ?fine:?typedef?in?class?scope
            25 ??? static ? int ?s_count;?????? // ?fine:static?member?dec.
            26 ??? int ?d_size;???? // ?fine:?member?data?def.
            27
            28 private :
            29 ??? struct ?Pnt?
            {
            30 ?????? short ? int
            ?d_x,?d_y;
            31 ??????Pnt( int ?x,? int
            ?y)?
            32 ???????:?d_x(x),?d_y(y)? {?}

            33 ???}
            ;?????????????? // ?fine:?private?struct?def.
            34 ???friend?DirverInit;?? // ?fine:?friend?dec.
            35
            36 public :
            37 ??? int ? static ?round( double ?d);?? // ?fine:static?member?function?dec.

            38 ??? void ?setSize( int ?size);? // ?fine:?member?function?dec.
            39 ??? int ?cmp( const ?Driver & )? const ;? // ?fine:?const?member?function?dec.
            40 }
            ;??????????????? // ?fine:?class?def.
            41
            42 static ? class ?DriverInit? {
            43 ?? // ?

            44 }
            ?DriverInit;??? // ?Special?class
            45
            46 int ?min( int ?x,? int ?y);?? // ?Avoid:?free?function?dec.
            47
            48 inline? int ?max( int ?x,? int ?y)
            49
            {
            50 ??? return ?x? > ?y? ?
            ?x?:?y;
            51??? }
            ??? // ?Avoid?free?inline?function?def.
            52
            53 inline? void ?Driver::setSize( int ?size)?
            54
            {
            55 ???d_size? =
            ?size;
            56 }
            ???? // ?fine:?inline?member?function?def.
            57
            58 ostream & ? operator ? << (ostream & ?o,? const ?Dirver & ?d);?? // ?fine:?free?operator?function?def.
            59
            60 inline? int ? operator ? == ( const ?Driver & ?lhs,? const ?Dirver & ?rhs)?
            61
            {
            62 ??? return ?compare(lhs,?rhs)? == ? 0
            ;
            63 }
            ???? // ?fine:?free?inline?operator?func.?def.
            64
            65 inline? int ?Driver::round( double ?d)
            66
            {
            67 ???retrun?d? < ? 0 ? ? ? - int ( 0.5 ? - ?d)?:? int ( 0.5 ? +
            ?d);
            68 }
            ???? // ?fine:?inline?static?member?func.?def.
            69
            70 #endif
            71
            72

            posted on 2007-01-07 15:00 Zero Lee 閱讀(790) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): C++ Performance

            評(píng)論

            # re: 頭文件中的名稱(chēng) 2007-05-25 15:10 morningstar

            good work!  回復(fù)  更多評(píng)論   

            中文无码久久精品| 亚洲午夜福利精品久久| 国产激情久久久久久熟女老人| 久久亚洲国产成人影院网站| 国产精品欧美久久久天天影视 | 亚洲综合精品香蕉久久网97 | 久久妇女高潮几次MBA| 久久久精品人妻一区二区三区蜜桃| 日本WV一本一道久久香蕉| 久久久久高潮综合影院| 99麻豆久久久国产精品免费| 狠狠狠色丁香婷婷综合久久五月 | 99久久99久久精品国产片果冻| 精品久久人人妻人人做精品| 香港aa三级久久三级老师2021国产三级精品三级在 | 伊人久久大香线蕉av一区| 欧美丰满熟妇BBB久久久| 99久久这里只有精品| 久久久精品国产Sm最大网站| 久久无码国产专区精品| 精品国产乱码久久久久久1区2区| 久久综合九色综合欧美狠狠| 久久久久亚洲AV综合波多野结衣 | 亚洲国产精品成人久久蜜臀| 婷婷久久香蕉五月综合加勒比| 久久精品国产69国产精品亚洲| 久久久久免费视频| 无码人妻久久一区二区三区免费 | 日本加勒比久久精品| 久久夜色精品国产噜噜噜亚洲AV | 久久影院综合精品| 亚洲欧洲久久av| 久久国产乱子伦精品免费强| 麻豆av久久av盛宴av| 亚洲一本综合久久| 久久久精品人妻一区二区三区蜜桃| 超级碰久久免费公开视频| 久久精品a亚洲国产v高清不卡| 中文精品99久久国产| 精品久久久久一区二区三区| 狠狠色丁香久久综合五月|