小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

WinMain中的lpCmdLine參數(shù) - 木水的日志 - 網(wǎng)易博客

 龍眼(1) 2010-10-16
win32可執(zhí)行程序分為兩種類型,基于控制臺(tái)(Consol-based)的和基于窗口(Windows-based)的?;诳刂婆_(tái)程序它的入口函數(shù)是傳統(tǒng)的main,基于窗口的則是WinMain。這兩個(gè)入口函數(shù)一大區(qū)別是對(duì)于命令行參數(shù)的處理。
WinMain函數(shù)原型:int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow),LPSTR lpCmdLine存儲(chǔ)了命令行參數(shù)信息,MSDN對(duì)這參數(shù)解釋:
lpCmdLine
[in] Pointer to a null-terminated string specifying the command line for the application, excluding the program name. To retrieve the entire command line, use the GetCommandLine function.
(指向一個(gè)應(yīng)用程序命令中,除了程序名的null字符結(jié)束的字符串。GetCommandLine函數(shù)可以返回整個(gè)命令行)
為了更清晰lpCmdLine是什么內(nèi)容,以下做一些測(cè)試。假設(shè)可執(zhí)行程序名:test.exe。
1、命令:test.exe (回車)
lpCmdLine:0x00141f03 "" char *
注:
0x00141f03:lpCmdLine運(yùn)行時(shí)內(nèi)存地址
"":lpCmdLine內(nèi)容,這里值是空串
char *:lpCmdLine類型,它指出lpCmdLine是字符串。
命令行中沒任何參數(shù)。lpCmdLine是有效地址,但它是空字符串,即lpCmdLine[0]='\0'。因而程序要判斷命令行是不是帶參數(shù)不能用if (lpCmdLine)而應(yīng)該用if (lpCmdLine[0])。
2、命令:test.exe --config-dir Wesnoth1.7 (回車)
lpCmdLine:0x00141f03 "--config-dir Wesnoth1.7" char *
命令行帶參數(shù),參數(shù)間有空格但沒有"符號(hào)。
3、命令:test.exe "--config-dir Wesnoth1.7" (回車)
lpCmdLine:0x00141f03 ""--config-dir Wesnoth1.7"" char *
相比2,這里強(qiáng)行給參數(shù)加了"",可以看到lpCmdLine不對(duì)參數(shù)內(nèi)的""進(jìn)行處理,直接復(fù)制。
4、命令:test.exe "--config-dir "Wesnoth1.7" (回車)
lpCmdLine:0x00141f03 ""--config-dir "Wesnoth1.7"" char *
相比于3,這里強(qiáng)行在中間加一個(gè)",這造成了""沒有配對(duì),但WinMain只是原樣復(fù)制而已。
WinMain的參數(shù)不像傳統(tǒng)的
main函數(shù),會(huì)依著特殊字符得出兩個(gè)參數(shù)argv和argc,它就是除去可執(zhí)行文件字符串(加上后續(xù)空格符)的整個(gè)命令行作為一個(gè)字符串,直接給了lpCmdLine。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多