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

            colorful

            zc qq:1337220912

             

            linux 下安裝luabind

              luabind需要boost 和lua, 請先安裝boost, lua
              luabind用到lua的動態(tài)庫,請在安裝lua時編譯出 liblua.so

              a: export BOOST_ROOT=/home/zc/tools/boost_1_48_0
              b: export LUA_PATH=/usr/local/
              c: bjam stage --toolset=gcc --with-date_time --with-fpic --with-filesystem link=static debug release  --這一步可以不要
              d: bjam install

            posted @ 2012-09-25 20:11 多彩人生 閱讀(890) | 評論 (0)編輯 收藏

            關(guān)于lua5.1.4找不到luaL_openlibs的問題

            忙了一下午,最后才發(fā)現(xiàn)是src/Makefile里少數(shù)據(jù)
            LUAC_T=    luac
            LUAC_O=    luac.o print.o
            LUA_SO= liblua.so

            ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
            ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
            ALL_A= $(LUA_A)

            default: $(PLAT)

            all:    $(ALL_T)

            o:    $(ALL_O)

            a:    $(ALL_A)

            $(LUA_A): $(CORE_O) $(LIB_O)
                $(AR) $@ $?
                $(RANLIB) $@

            $(LUA_T): $(LUA_O) $(LUA_A)
                $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)

            $(LUAC_T): $(LUAC_O) $(LUA_A)
                $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)

            $(LUA_SO):$(CORE_O) $(LIB_O)
                $(CC) -o $@ -shared -fPIC $? -ldl -lm

            posted @ 2012-09-25 19:53 多彩人生 閱讀(1903) | 評論 (0)編輯 收藏

            lua 安裝

            下載源文件
            tar zxvf lua.tar.gz
            make linux
            make install

            提示找不到readline/readline.h
            apt-get install libncurses5-dev libreadline5-dev

            posted @ 2012-09-25 14:23 多彩人生 閱讀(303) | 評論 (0)編輯 收藏

            VS2008下編譯luabind 0.8.1

                 學(xué)了一段時間Lua,顯然直接在項目中使用是很不方便,google了一下,似乎大家都對luabind這個lua包裝類青睞有加,于是我也隨大勢想用用看。
                 先做好準(zhǔn)備工作,下載了luabin 0.8.1源碼,Boost 1.3.8源碼和lua 5.1.4源碼,編譯環(huán)境是VS2008 SP1。之前在網(wǎng)上看到一些文章說這些開源軟件之間的版本依賴比較敏感,可能會有這樣那樣的問題,動手之前有些惶恐。
                 幸運的是,編譯過程很順利,如下:
                 1.編譯lua 5.1.4
                 進(jìn)入VS2008的命令行工具,定位到lua的源碼目錄下,執(zhí)行命令etc\luavs.bat,沒什么問題的話很快就可以編譯好lua,得到lua51.lib和lua51.dll。
                 2.編譯luabind
                 解壓下載回來的luabind壓縮包,假設(shè)解壓到d:\luabind-0.8.1\,Boost解壓到d:\boost 1_38_0\,lua解壓到d:\lua 5.1.4\
                 在 VS中新建一個靜態(tài)庫項目,將d:\luabind-0.8.1\src下的源碼全部添加到項目中,然后在項目中新建luabind和luabind \detail\兩個虛擬文件夾,對應(yīng)的將d:\luabind-0.8.1\luabind和d:\luabind-0.8.1\luabind \detail下的文件添加到文件夾中。
                 然后為項目添加附加包含目錄,右鍵點擊項目節(jié)點->屬性->配置屬性->C\C++標(biāo)簽下,在附加包含目錄中填入d: \luabind-0.8.1\;d:\boost 1_38_0\k;d:\lua 5.1.4\src\。然后修改項目字符集為多字節(jié)字符集。
                 準(zhǔn)備就緒,生成項目。在我的環(huán)境中編譯很順利,沒有出現(xiàn)任何問題,成功后會得到luabind.lib。

                 接下來就按照慣例來寫一個hello world程序作為使用luabind的第一步。
                 在VS中新建一個控制臺項目,類型為DLL,命名項目為Hello World,然后鍵入以下代碼:

             1#include "stdafx.h"
             2#include <iostream>
             3#include <luabind/luabind.hpp>
             4
             5void greet()
             6{
             7    std::cout << "hello world!\n";
             8}

             9
            10extern "C" int __declspec(dllexport) init(lua_State* L)
            11{
            12    using namespace luabind;
            13
            14    open(L);
            15
            16    module(L)
            17    [
            18        def("greet"&greet)
            19    ];
            20
            21    return 0;
            22}


               注意,在Windows環(huán)境下init函數(shù)之前是要加 __declspec(dllexport)才能將函數(shù)導(dǎo)出的,而luabind的文檔中的環(huán)境是linux,默認(rèn)不用加 __declspec(dllexport)也可以導(dǎo)出(就因為這個折騰了我半天才把hello word成功運行)。
               編譯項目,(記得將luabind.lib和lua51.lib添加到鏈接選項中:項目屬性->連接器->輸入->附加依賴文件,加入luabind.lib和lua51.lib)。
               將hello world.dll放到lua51.dll和lua.exe所在的目錄下。
               打開lua命令行,鍵入:
                
               測試成功,enjoy。

            posted @ 2012-09-10 21:05 多彩人生 閱讀(236) | 評論 (0)編輯 收藏

            pg_ctl

            pg_ctl -- 啟動、停止、重啟 PostgreSQL
            2010-01-11 19:08

            pg_ctl

            名稱

            pg_ctl -- 啟動、停止、重啟 PostgreSQL

            語法

            pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]
            pg_ctl stop [-W] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
            pg_ctl restart [-w] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
            pg_ctl reload [-s] [-D datadir]
            pg_ctl status [-D datadir]
            pg_ctl kill [signal_name] [process_id]
            pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-w] [-o options]
            pg_ctl unregister [-N servicename]

            描述

            pg_ctl 用于啟動、停止、重啟 PostgreSQL 后端服務(wù)器(postgres),或者顯示一個運行著的服務(wù)器的狀態(tài)。盡管可以手動啟動服務(wù)器,但是 pg_ctl 封裝了重新定向日志輸出,與終端和進(jìn)程組合理分離,以及另外提供了一個選項用于有控制的關(guān)閉。

            start 模式里會啟動一個新的服務(wù)器。服務(wù)器是在后臺啟動的,標(biāo)準(zhǔn)輸入被附著到了 /dev/null 上。如果使用了 -l ,那么標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤將被定向到一個日志文件,要么就是重定向到 pg_ctl 的標(biāo)準(zhǔn)輸出(而不是標(biāo)準(zhǔn)錯誤)。如果沒有選定日志文件,pg_ctl 的標(biāo)準(zhǔn)輸出應(yīng)該重定向到一個文件或者用管道輸出到類似 rotatelogs 這樣的日志滾動程序,否則,postgres 將把它的輸出寫到控制終端(在后臺)并且將不會脫離 shell 的進(jìn)程組。

            stop 模式下,那個正在特定數(shù)據(jù)目錄運行的服務(wù)器將被關(guān)閉。你可以用 -m 選項選擇三種不同的關(guān)閉模式:"Smart"模式等待所有客戶端中斷連接,這是缺省。"Fast"模式并不等待客戶端中斷連接,所有活躍事務(wù)都被回滾并且 客戶端都被強(qiáng)制斷開。"Immediate"模式將在沒有干凈關(guān)閉的情況下強(qiáng)行退出。這么做將導(dǎo)致在重新啟動的時候的恢復(fù)。

            restart 實際上是先執(zhí)行一個停止,然后緊跟一個啟動。它允許變換 postgres 的命令行選項。

            reload 模式簡單地給 postgres 發(fā)送一個 SIGHUP 信號,導(dǎo)致它重新讀取配置文件(postgresql.conf, pg_hba.conf 等),這樣就允許修改配置文件選項而不用重啟系統(tǒng)即可生效。

            status 模式監(jiān)查一個服務(wù)器是否在指定的數(shù)據(jù)目錄運行,如果是,那么顯示其 PID 和調(diào)用它的命令行選項。

            kill 模式允許你給一個指定的進(jìn)程發(fā)送信號。這個功能對 Microsoft Windows 特別有用,因為它沒有 kill 命令。使用 --help 查看支持的信號名字列表。

            register 模式允許你在 Microsoft Windows 上注冊一個系統(tǒng)服務(wù)。

            unregister 模式允許你在 Microsoft Windows 上刪除先前用 register 命令注冊的系統(tǒng)服務(wù)。

            選項

            -D datadir

            聲明該數(shù)據(jù)庫的文件系統(tǒng)位置。如果忽略則使用 PGDATA 環(huán)境變量。

            -l filename

            把服務(wù)器日志輸出附加在 filename 文件上。如果該文件不存在則創(chuàng)建它。umask 設(shè)置為 077 ,因此缺省時是不允許從其它用戶向日志文件訪問的。

            -m mode

            聲明關(guān)閉模式。mode 可以是 smart, fast, immediate 之一,或者是這三個的首字母之一。

            -o options

            聲明要直接傳遞給 postgres 的選項。

            參數(shù)通常都用單或者雙引號包圍以保證它們作為一個整體傳遞。

            -p path

            聲明 postgres 可執(zhí)行文件的位置。缺省位于 pg_ctl 自身所在目錄,如果沒找到則使用硬編碼的安裝目錄。除非你想干點什么特別的事情,并且想得到類似沒有找到 postgres 這樣的錯誤,否則必須使用這個選項。

            -s

            只打印錯誤,而不打印提示性信息。

            -w

            等待啟動或者關(guān)閉的完成(60 秒超時),這個參數(shù)是關(guān)閉時的缺省值。成功的關(guān)閉是以刪除 PID 文件為標(biāo)志的。對于啟動而言,一次成功的 psql -l 就標(biāo)志著成功。pg_ctl 將企圖使用對 psql 合適的端口,如果存在 PGPORT 環(huán)境變量,那么將用它。否則,它將查找在 postgresql.conf 文件里是否設(shè)置了一個端口。如果都沒有,它將使用 PostgreSQL 編譯時的缺省端口(缺省 5432)。在等待的時候,pg_ctl 將根據(jù)啟動或者關(guān)閉的成功狀況返回一個準(zhǔn)確的退出代碼。

            -W

            不等待啟動或者停止的完成。這是啟動和重啟的缺省。

            posted @ 2012-08-15 18:14 多彩人生 閱讀(459) | 評論 (0)編輯 收藏

            精確獲取時間(QueryPerformanceCounter)

            LARGE_INTEGER tima,timb;
            QueryPerformanceCounter(&tima);

            在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函數(shù)的程序可能執(zhí)行不當(dāng)

            QueryPerformanceCounter 來精確計算執(zhí)行時間
            QueryPerformanceCounter 來精確計算執(zhí)行時間
            // 這個程式展示了如何使用QueryPerformanceCounter 來精確計算執(zhí)行時間
            //代碼


             

            1. LARGE_INTEGER m_liPerfFreq={0};
            2.  //獲取每秒多少CPU Performance Tick
            3.  QueryPerformanceFrequency(&m_liPerfFreq); 

            4.  LARGE_INTEGER m_liPerfStart={0};
            5.  QueryPerformanceCounter(&m_liPerfStart);

            6.  for(int i=0; i< 100; i++)
            7.   cout << i << endl;

            8.  LARGE_INTEGER liPerfNow={0};
            9.  // 計算CPU運行到現(xiàn)在的時間
            10.  QueryPerformanceCounter(&liPerfNow);

            11.  int time=( ((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000)/m_liPerfFreq.QuadPart);

            12.  char buffer[100];
            13.  sprintf(buffer,"執(zhí)行時間 %d millisecond ",time);

            14.  cout<<buffer<<endl;


            QueryPerformanceCounter()這個函數(shù)返回高精確度性能計數(shù)器的值,它可以以微妙為單位計時.但是 QueryPerformanceCounter()確切的精確計時的最小單位是與系統(tǒng)有關(guān)的,所以,必須要查詢系統(tǒng)以得到 QueryPerformanceCounter()返回的嘀噠聲的頻率.
            QueryPerformanceFrequency()提供了這個頻率值,返回每秒嘀噠聲的個數(shù).
            計算確切的時間是從第一次調(diào)用QueryPerformanceCounter()開始的
            假設(shè)得到的LARGE_INTEGER為nStartCounter,過一段時間后再次調(diào)用該函數(shù)結(jié)束的,
            設(shè)得到nStopCounter.
            兩者之差除以QueryPerformanceFrequency()的頻率就是開始到結(jié)束之間的秒數(shù).由于計時函數(shù)本身要耗費很少的時間,要減去一個很少的時間開銷.但一般都把這個開銷忽略.公式如下:   
                                     nStopCounter-nStartCounter
            ElapsedTime=------------------------------------ - overhead
            frequency

            double time=(nStopCounter.QuadPart-nStartCounter.QuadPart)/frequency.QuadPart

             

             

            這兩個函數(shù)是VC提供的僅供Windows 95及其后續(xù)版本使用的精確時間函數(shù),并要求計算機(jī)從硬件上支持精確定時器。
            QueryPerformanceFrequency()函數(shù)和QueryPerformanceCounter()函數(shù)的原型如下:

                   BOOL  QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);        BOOL  QueryPerformanceCounter(LARGE_INTEGER *lpCount);

              數(shù)據(jù)類型ARGE_INTEGER既可以是一個8字節(jié)長的整型數(shù),也可以是兩個4字節(jié)長的整型數(shù)的聯(lián)合結(jié)構(gòu), 其具體用法根據(jù)編譯器是否支持64位而定。該類型的定義如下:

                   typedef union _LARGE_INTEGER        {            struct            {               DWORD LowPart ;// 4字節(jié)整型數(shù)               LONG  HighPart;// 4字節(jié)整型數(shù)            };            LONGLONG QuadPart ;// 8字節(jié)整型數(shù)                     }LARGE_INTEGER ;

              在進(jìn)行定時之前,先調(diào)用QueryPerformanceFrequency()函數(shù)獲得機(jī)器內(nèi)部定時器的時鐘頻率, 然后在需要嚴(yán)格定時的事件發(fā)生之前和發(fā)生之后分別調(diào)用QueryPerformanceCounter()函數(shù),利用兩次獲得的計數(shù)之差及時鐘頻率,計算出事件經(jīng) 歷的精確時間。下列代碼實現(xiàn)1ms的精確定時:

             
            1.        LARGE_INTEGER litmp; 
            2.        LONGLONG QPart1,QPart2;
            3.        double dfMinus, dfFreq, dfTim; 
            4.        QueryPerformanceFrequency(&litmp);
            5.        dfFreq = (double)litmp.QuadPart;// 獲得計數(shù)器的時鐘頻率
            6.        QueryPerformanceCounter(&litmp);
            7.        QPart1 = litmp.QuadPart;// 獲得初始值
            8.        do
            9.        {
            10.           QueryPerformanceCounter(&litmp);
            11.           QPart2 = litmp.QuadPart;//獲得中止值
            12.           dfMinus = (double)(QPart2-QPart1);
            13.           dfTim = dfMinus / dfFreq;// 獲得對應(yīng)的時間值,單位為秒
            14.        }while(dfTim<0.001);

              其定時誤差不超過1微秒,精度與CPU等機(jī)器配置有關(guān)。 下面的程序用來測試函數(shù)Sleep(100)的精確持續(xù)時間:

             
            1.        LARGE_INTEGER litmp; 
            2.        LONGLONG QPart1,QPart2;
            3.        double dfMinus, dfFreq, dfTim; 
            4.        QueryPerformanceFrequency(&litmp);
            5.        dfFreq = (double)litmp.QuadPart;// 獲得計數(shù)器的時鐘頻率
            6.        QueryPerformanceCounter(&litmp);
            7.        QPart1 = litmp.QuadPart;// 獲得初始值
            8.        Sleep(100);
            9.        QueryPerformanceCounter(&litmp);
            10.        QPart2 = litmp.QuadPart;//獲得中止值
            11.        dfMinus = (double)(QPart2-QPart1);
            12.        dfTim = dfMinus / dfFreq;// 獲得對應(yīng)的時間值,單位為秒    

              由于Sleep()函數(shù)自身的誤差,上述程序每次執(zhí)行的結(jié)果都會有微小誤差。下列代碼實現(xiàn)1微秒的精確定時:

             
            1.        LARGE_INTEGER litmp; 
            2.        LONGLONG QPart1,QPart2;
            3.        double dfMinus, dfFreq, dfTim; 
            4.        QueryPerformanceFrequency(&litmp);
            5.        dfFreq = (double)litmp.QuadPart;// 獲得計數(shù)器的時鐘頻率
            6.        QueryPerformanceCounter(&litmp);
            7.        QPart1 = litmp.QuadPart;// 獲得初始值
            8.        do
            9.        {
            10.           QueryPerformanceCounter(&litmp);
            11.           QPart2 = litmp.QuadPart;//獲得中止值
            12.           dfMinus = (double)(QPart2-QPart1);
            13.           dfTim = dfMinus / dfFreq;// 獲得對應(yīng)的時間值,單位為秒
            14.        }while(dfTim<0.000001);

            其定時誤差一般不超過0.5微秒,精度與CPU等機(jī)器配置有關(guān)。(

            posted @ 2012-07-27 19:00 多彩人生 閱讀(522) | 評論 (0)編輯 收藏

            C/C++通用Makefile

            http://wenku.baidu.com/view/17a11ef8fab069dc502201d4.html
            http://wenku.baidu.com/view/a2429bd728ea81c758f578cd.html
            http://blog.csdn.net/fljing/article/details/6257867

            posted @ 2012-07-26 23:19 多彩人生 閱讀(296) | 評論 (0)編輯 收藏

            gcc的參數(shù)

            http://wuqinzhong.blog.163.com/blog/static/452223120095248474729/

            posted @ 2012-07-26 22:34 多彩人生 閱讀(236) | 評論 (0)編輯 收藏

            cannot pass objects of non-POD type

            移植代碼到Linux下,運行總是崩潰(在windows下正常)。
            調(diào)試發(fā)現(xiàn)問題出在下列語句:
               wxString szSiteHead = wxString::Format( wxT("<Location /%s>"), file.GetName() );
            查看編譯記錄有下列警告信息
               warning: cannot pass objects of non-POD type 'class wxString' through '...'; call will abort at runtime|
            提示在運行時會異常。
             
            查找 POD type定義如下:非原生類型
             
            POD stands for Plain Old Data - that is, a struct (or class) with no members except data members. Wikipedia goes into a bit more detail and defines a POD in C++ as "A Plain Old Data Structure in C++ is an aggregate class that contains only PODS as members, has no user-defined destructor, no user-defined copy assignment operator, and no nonstatic members of pointer-to-member type."
             
            代碼更改后OK。
            wxString szSiteHead = wxString::Format( wxT("<Location /%s>"), file.GetName().c_str() );

            ===================================================================================
            ctags: c++ warning "cannot pass objects of non-POD type"

            1、不要忽視編譯時的任何一個 Warning .2、正確使用輸入輸出流,避開高危函數(shù)。

            1、printf("Hello %s" ,str.c_str());
            2、cout<<str;

            string 非原生類型 non-POD,編譯器無法把它傳入.

            下面是一個網(wǎng)上的小例子。

            im trying to compile following code
            --------------------sam.cpp---------------------
            #include <string>
            #include <iostream>
            #include <stdarg.h>
            using namespace std;

            void Write( const char* msg, const char* msg2, ...)
            {
            cout <<msg <<" "<<msg2<<endl;
            }

            int main()
            {
            string str("World");
            Write("Hello","Debug out %s" ,str);
            return 0;
            }
            -------------------------------------------

            When i compile this code i get following compilation warning .

            [oracle@sahyagiri test]$ g++ sam.cpp
            sam.cpp: In function `int main()':
            sam.cpp:17: warning: cannot pass objects of non-POD
            type `struct std::string'
            through `...'; call will abort at runtime

            When i run the executable, a.out it fails with Illegal
            instruction eror

            posted @ 2012-07-26 12:45 多彩人生 閱讀(1232) | 評論 (0)編輯 收藏

            shell腳本中局部變量

            在shell中定義函數(shù)可以使代碼模塊化,便于復(fù)用代碼。不過腳本本身的變量和函數(shù)的變量的作用域問題可能令你費解,在這里梳理一下這個問題。

            (1)Shell腳本中定義的變量是global的,其作用域從被定義的地方開始,到shell結(jié)束或被顯示刪除的地方為止。

            例1:腳本變量的作用域
            #!/bin/bash
            #define the function ltx_func
            ltx_func()
            {
               echo $v1
               #modify the variable v1
               v1=200
            }
            #define the variable v1
            v1=100
            #call the function ltx_func
            ltx_func
            echo $v1

            結(jié)果:
            100
            200
            解析:腳本變量v1的作用域從被定義的地方開始,到shell結(jié)束。調(diào)用函數(shù)ltx_func的地方在變量v1的作用域內(nèi),所以能夠訪問并修改變量v1。

            (2)Shell函數(shù)定義的變量默認(rèn)是global的,其作用域從“函數(shù)被調(diào)用時執(zhí)行變量定義的地方”開始,到shell結(jié)束或被顯示刪除處為止。函數(shù)定義的變量可以被顯示定義成local的,其作用域局限于函數(shù)內(nèi)。但請注意,函數(shù)的參數(shù)是local的。

            例2:函數(shù)定義的global變量
            #!/bin/bash
            #define the function ltx_func
            ltx_func()
            {
               #define the variable v2
               v2=200
            }
            #call the function ltx_func
            ltx_func
            echo $v2

            結(jié)果:
            200
            解析:函數(shù)變量v2默認(rèn)是global的,其作用域從“函數(shù)被調(diào)用時執(zhí)行變量定義的地方”開始,到shell結(jié)束為止。注意,不是從定義函數(shù)的地方開始,而是從調(diào)用函數(shù)的地方開始。打印命令在變量v2的作用域內(nèi),所以能夠訪問變量v2。

            例3:函數(shù)定義的local變量
            #!/bin/bash
            #define the function ltx_func
            ltx_func()
            {
               #define the local variable v2
               local v2=200
            }
            #call the function ltx_func
            ltx_func
            echo $v2

            結(jié)果:
            (空)
            解析:函數(shù)變量v2顯示定義為local的,其作用域局限于函數(shù)內(nèi)。打印命令在函數(shù)外,不在變量v2的作用域內(nèi),所以能夠不能訪問變量v2。

            例4:函數(shù)參數(shù)是local變量
            #!/bin/bash
            #define the function ltx_func
            ltx_func()
            {
               echo "param 1: $1"
            }
            #call the function ltx_func
            ltx_func 100

            結(jié)果:
            100
            解析:函數(shù)參數(shù)是local的,通過位置變量來訪問。打印命令輸出函數(shù)的第一個參數(shù)。

            (3)如果同名,Shell函數(shù)定義的local變量會屏蔽腳本定義的global變量。

            例5:同名local變量屏蔽global變量
            #!/bin/bash
            #define the function ltx_func
            ltx_func()
            {
               echo $v1
               #define the local variable v1
               local v1=200
               echo $v1
            }
            #define the global variable v1
            v1=100

            #call the function ltx_func
            ltx_func
            echo $v1

            結(jié)果:
            100
            200
            100
            解析:global變量v1的作用域從被定義的地方開始,到shell結(jié)束。調(diào)用函數(shù)ltx_func的地方在變量v1的作用域內(nèi),所以能夠變量v1。函 數(shù)又定義了同名的local變量v1,同名local變量屏蔽global變量,所以函數(shù)第二次打印訪問的是local變量。退出函數(shù)后再次打印v1,此 時函數(shù)定義的local變量已經(jīng)消失,訪問的是global變量。

            posted @ 2012-07-26 10:53 多彩人生 閱讀(366) | 評論 (0)編輯 收藏

            僅列出標(biāo)題
            共25頁: First 9 10 11 12 13 14 15 16 17 Last 

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品久久久久免费a∨| 国产精品午夜久久| 奇米综合四色77777久久| 国产精品久久久久影院嫩草| 亚洲狠狠综合久久| 欧美牲交A欧牲交aⅴ久久| 成人国内精品久久久久影院| 久久国产成人亚洲精品影院| 日本人妻丰满熟妇久久久久久| 情人伊人久久综合亚洲| 少妇精品久久久一区二区三区 | 久久久国产精品亚洲一区| 情人伊人久久综合亚洲| 伊人久久大香线焦AV综合影院 | 久久精品国产半推半就| 久久国产精品波多野结衣AV| 久久精品国产2020| 久久久久久一区国产精品| 97久久超碰国产精品旧版| 久久无码高潮喷水| 欧美日韩精品久久久免费观看| 国产精品久久亚洲不卡动漫| 亚洲国产精品无码久久久不卡 | 91精品国产91久久久久久青草| 精品伊人久久久| 国内精品伊人久久久久影院对白| 蜜臀av性久久久久蜜臀aⅴ| 久久人人爽人人爽人人片AV东京热 | 成人国内精品久久久久影院VR| 久久婷婷五月综合国产尤物app | 国内精品久久久久久久97牛牛 | 久久精品国产亚洲AV大全| 国产激情久久久久久熟女老人| 蜜臀久久99精品久久久久久| 久久精品国产福利国产琪琪| 91久久成人免费| 精品水蜜桃久久久久久久| 国产精品无码久久综合网| 久久亚洲AV永久无码精品| 亚洲成av人片不卡无码久久| 国内精品久久久久影院亚洲|