• <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>

            小明思考

            高性能服務(wù)器端計(jì)算
            posts - 70, comments - 428, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            如何寫(xiě)出專(zhuān)業(yè)的C頭文件

            Posted on 2007-05-15 13:38 小明 閱讀(10408) 評(píng)論(7)  編輯 收藏 引用 所屬分類(lèi): C/C++
             

            做到專(zhuān)業(yè),應(yīng)該是每個(gè)職業(yè)程序員應(yīng)該要求自己做到的。
            讓我們看看lua是怎么寫(xiě)頭文件的。

            1.License Agreement
            License Agreement
            應(yīng)該加在每個(gè)頭文件的頂部。
            Lua Sample:

             

            /*
            ** $Id: lua.h,v 1.175b 2003/03/18 12:31:39 roberto Exp $
            ** Lua - An Extensible Extension Language
            ** Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil
            ** 
            http://www.lua.org    mailto:info@lua.org
            ** See Copyright Notice at the end of this file
            */

             


            2.guard define
            整個(gè)頭文件應(yīng)該在guard define之間

            #ifndef lua_h
            #define lua_h

            #endif

             另外,如果這個(gè)頭文件可能給c++使用,要加上

            #ifdef __cplusplus
            extern "C" {
            #endif
            /*The lines within extern "C" */



            #ifdef __cplusplus
            }
            #endif

             
            3.盡量不要在頭文件中暴露數(shù)據(jù)結(jié)構(gòu)

            這樣可以用戶(hù)降低對(duì)你的實(shí)現(xiàn)的依賴(lài),也減少了用戶(hù)的編譯時(shí)間

             

            typedef struct lua_State lua_State;
            LUA_API lua_State 
            *lua_open (void);
            LUA_API 
            void       lua_close (lua_State *L);

             可以看到雖然用戶(hù)會(huì)一直使用lua_State,但是并不知道lua_State的結(jié)構(gòu)是什么

            從一個(gè)使用lua的例子程序可以看出:

             

            #include "lua.h"
            #include 
            "lauxlib.h"
            #include 
            "lualib.h"

             

            int main(int argc, char *argv[])
            {
                lua_State 
            *= lua_open();
                
            const char *buf = "var = 100";
                
            int var ;
                luaopen_base(L);
                luaopen_io(L);
                lua_dostring(L, buf);
                lua_getglobal(L, 
            "var");
                var 
            = lua_tonumber(L, -1);
                lua_close(L);
                
            return 0;
            }

             

            4.函數(shù)聲明前加XXX_API已利于拓展

             Lua的例子

            #ifndef LUA_API
            #define LUA_API              extern
            #endif

            LUA_API lua_State 
            *lua_open (void);


            如果定義了LUA_API就是給LUA內(nèi)部使用的

            如果沒(méi)定義LUA_API就是for user

            寫(xiě)Window dll程序經(jīng)常會(huì)用到

             

            #ifdef DLLTEST_EXPORTS
            #define DLLTEST_API __declspec(dllexport)
            #else
            #define DLLTEST_API __declspec(dllimport)
            #endif

             

             

            5.宏的定義

            盡量使用括號(hào)來(lái)包住所定義的對(duì)象

             

            #define LUA_TNONE       (-1)

            #define lua_register(L,n,f) \
                   (lua_pushstring(L, n), \
                    lua_pushcfunction(L, f), \
                    lua_settable(L, LUA_GLOBALSINDEX))

             
            6.目錄結(jié)構(gòu)

            一般應(yīng)該使用一個(gè)單獨(dú)的include目錄來(lái)包含要發(fā)布的頭文件,但不應(yīng)該把內(nèi)部使用的頭文件包含進(jìn)去。

            Lua   include目錄只包含了三個(gè)頭文件

            lauxlib.h , lua.h, lualib.h

            非常簡(jiǎn)潔

            Feedback

            # re: 如何寫(xiě)出專(zhuān)業(yè)的C頭文件  回復(fù)  更多評(píng)論   

            2007-05-17 11:49 by 丑石
            總結(jié)的不錯(cuò)!

            # re: 如何寫(xiě)出專(zhuān)業(yè)的C頭文件  回復(fù)  更多評(píng)論   

            2007-05-18 23:07 by Qiu Xianli
            值得學(xué)習(xí)一下。

            # re: 如何寫(xiě)出專(zhuān)業(yè)的C頭文件  回復(fù)  更多評(píng)論   

            2007-09-01 22:48 by 螞蟻終結(jié)者
            不錯(cuò),學(xué)習(xí)了。

            # re: 如何寫(xiě)出專(zhuān)業(yè)的C頭文件  回復(fù)  更多評(píng)論   

            2007-10-17 10:04 by 螞蟻終結(jié)者
            都是相當(dāng)實(shí)用的,不錯(cuò)。

            # re: 如何寫(xiě)出專(zhuān)業(yè)的C頭文件  回復(fù)  更多評(píng)論   

            2008-01-23 16:41 by icqanki
            的確不錯(cuò).

            # re: 如何寫(xiě)出專(zhuān)業(yè)的C頭文件  回復(fù)  更多評(píng)論   

            2008-07-03 18:23 by pantree
            謝謝了,不錯(cuò),啟發(fā)很多。最近正為這個(gè)頭疼

            # re: 如何寫(xiě)出專(zhuān)業(yè)的C頭文件  回復(fù)  更多評(píng)論   

            2010-01-20 10:34 by xx
            支持,總結(jié)得不錯(cuò)
            日韩精品久久无码人妻中文字幕| 亚洲AV日韩精品久久久久久| 久久精品国产亚洲AV嫖农村妇女| 亚洲伊人久久综合影院| 久久久久一本毛久久久| 精品人妻伦九区久久AAA片69| 亚洲狠狠综合久久| 久久国产精品免费| 久久se这里只有精品| 99久久国产亚洲高清观看2024 | 久久久久久曰本AV免费免费| 久久国产成人精品国产成人亚洲| 久久久精品久久久久久 | 2020久久精品国产免费| www性久久久com| 国产精品日韩欧美久久综合| 久久男人AV资源网站| 久久精品国产2020| 狠狠色婷婷综合天天久久丁香| 久久综合综合久久狠狠狠97色88| 久久99精品久久久久久齐齐 | 婷婷久久五月天| 亚洲午夜久久久久久噜噜噜| 2021久久国自产拍精品| 久久99热精品| 香蕉久久久久久狠狠色| 好久久免费视频高清| 国产精品伊人久久伊人电影| 中文字幕精品无码久久久久久3D日动漫 | 久久精品国产亚洲av麻豆图片| 亚洲精品乱码久久久久久蜜桃图片 | 久久伊人亚洲AV无码网站| 18禁黄久久久AAA片| 成人妇女免费播放久久久| 亚洲精品无码久久久久AV麻豆| 久久精品国产99久久无毒不卡| 久久精品二区| 狠狠狠色丁香婷婷综合久久五月 | 久久精品中文騷妇女内射| 久久久人妻精品无码一区| 国产精品久久国产精品99盘|