青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

笑看風云淡

寵辱不驚,看庭前花開花落;去留無意,望天空云卷云舒
posts - 96, comments - 48, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理
        編譯參數的設置。主要通過IDE的菜單項Project->Settings->C/C++頁來完成。我們可以看到這一頁的最下面Project Options中的內容,一般如下:

 

  /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_M

  BCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c

  各個參數代表的意義,可以參考Msdn。比如/nologo表示編譯時不在輸出窗口顯示這些設置(我們可以把這個參數去掉來看看效果)等等。一般我們不會直接修改這些設置,而是通過這一頁最上面的Category中的各項來完成。

  1) General:一些總體設置。Warning level用來控制警告信息,其中Level 1是最嚴重的級別;Warnings as errors將警告信息當作錯誤處理;Optimizations是代碼優化,可以在Category的Optimizations項中進行更細的設置;Generate browse info用以生成.sbr文件,記錄類、變量等符號信息,可以在Category的Listing Files項中進行更多的設置。Debug info,生成調試信息:None,不產生任何調試信息(編譯比較快);Line Numbers Only,僅生成全局的和外部符號的調試信息到.OBJ文件或.EXE文件,減小目標文件的尺寸;C 7.0- Compatible,記錄調試器用到的所有符號信息到.OBJ文件和.EXE文件;Program Database,創建.PDB文件記錄所有調試信息;Program Database for "Edit & Continue",創建.PDB文件記錄所有調試信息,并且支持調試時編輯。

  2) C++ Language:pointer_to_member representation用來設置類定義/引用的先后關系,一般為Best-Case Always表示在引用類之前該類肯定已經定義了;Enable Exception Handling,進行同步的異常處理;Enable Run-Time Type Information迫使編譯器增加代碼在運行時進行對象類型檢查;Disable Construction Displacements,設置類構造/析構函數調用虛函數問題。

  3) Code Generation:Processor表示代碼指令優化,可以為80386、80486、Pentium、Pentium Pro,或者Blend表示混合以上各種優化。Use run-time library用以指定程序運行時使用的運行時庫(單線程或多線程,Debug版本或Release版本),有一個原則就是,一個進程不要同時使用幾個版本的運行時庫。Single-Threaded,靜態連接LIBC.LIB庫;Debug Single-Threaded,靜態連接LIBCD.LIB庫;Multithreaded,靜態連接LIBCMT.LIB庫;Debug Multithreaded,靜態連接LIBCMTD.LIB庫;Multithreaded DLL,動態連接MSVCRT.DLL庫;Debug Multithreaded DLL,動態連接MSVCRTD.DLL庫。連接了單線程庫就不支持多線程調用,連接了多線程庫就要求創建多線程的應用程序。

  Calling convention可以用來設定調用約定,有三種:__cdecl、__fastcall和__stdcall。各種調用約定的主要區別在于,函數調用時,函數的參數是從左到右壓入堆棧還是從右到左壓入堆棧;在函數返回時,由函數的調用者來清理壓入堆棧的參數還是由函數本身來清理;以及在編譯時對函數名進行的命名修飾(可以通過Listing Files看到各種命名修飾方式)。Struct member alignment用以指定數據結構中的成員變量在內存中是按幾字節對齊的,根據計算機數據總線的位數,不同的對齊方式存取數據的速度不一樣。這個參數對數據包網絡傳輸等應用尤為重要,不是存取速度問題,而是數據位的精確定義問題,一般在程序中使用#pragma pack來指定。

  4) Customize:Disable Language Extensions,表示不使用微軟為標準C做的語言擴展;Eliminate Duplicate Strings,主要用于字符串優化(將字符串放到緩充池里以節省空間),使用這個參數,使得

  char *sBuffer = "This is a character buffer";

  char *tBuffer = "This is a character buffer";

sBuffer和tBuffer指向的是同一塊內存空間;Enable Function-Level Linking ,告訴編譯器將各個函數按打包格式編譯;Enables minimal rebuild,通過保存關聯信息到.IDB文件,使編譯器只對最新類定義改動過的源文件進行重編譯,提高編譯速度;Enable Incremental Compilation,同樣通過.IDB文件保存的信息,只重編譯最新改動過的函數;Suppress Startup Banner and Information Messages,用以控制參數是否在output窗口輸出。

  5) Listing Files:Generate browse info的功能上面已經提到過。這里可以進行更多的設置。Exclude Local Variables from Browse Info表示是否將局部變量的信息放到.SBR文件中。Listing file type可以設置生成的列表信息文件的內容:Assembly-Only Listing僅生成匯編代碼文件(.ASM擴展名);Assembly With Machine Code生成機器代碼和匯編代碼文件(.COD擴展名);Assembly With Source Code生成源代碼和匯編代碼文件(.ASM擴展名);Assembly, Machine Code,and Source生成機器碼、源代碼和匯編代碼文件(.COD擴展名)。Listing file name為生成的信息文件的路徑,一般為Debug或Release目錄下,生成的文件名自動取源文件的文件名。

  6) Optimizations:代碼優化設置。可以選擇Maximize Speed生成最快速的代碼,或Minimize Size生成最小尺寸的程序,或者Customize定制優化。定制的內容包括:

  Assume No Aliasing,不使用別名(提高速度);

  Assume Aliasing Across Function Calls,僅函數內部不使用別名;

  Global Optimizations,全局優化,比如經常用到的變量使用寄存器保存,或者循環內的計算優化,如

  i = -100;

  while( i < 0 ){ i += x + y;}

  會被優化為

  i = -100;

  t = x + y;

  while( i < 0 ){i += t;}

  Generate Intrinsic Functions,使用內部函數替換一些函數調用(提高速度);

  Improve Float Consistency,浮點運算方面的優化;

  Favor Small Code,程序(exe或dll)尺寸優化優先于代碼速度優化;

  Favor Fast Code,程序(exe或dll)代碼速度優化優先于尺寸優化;

  Frame-Pointer Omission,不使用幀指針,以提高函數調用速度;

  Full Optimization,組合了幾種參數,以生成最快的程序代碼。

  Inline function expansion,內聯函數擴展的三種優化(使用內聯可以節省函數調用的開銷,加快程序速度):Disable不使用內聯;Only __inline,僅函數定義前有inline或__inline標記使用內聯;Any Suitable,除了inline或__inline標記的函數外,編譯器“覺得”應該使用內聯的函數,都使用內聯。

  7) Precompiled Headers:預編譯頭文件的設置。使用預編譯可以提高重復編譯的速度。IDE一般將一些公共的、不大變動的頭文件(比如afxwin.h等)集中放到stdafx.h中,這一部分代碼就不必每次都重新編譯(除非是Rebuild All)。

  8) Preprocessor:預編譯處理。可以定義/解除定義一些常量。Additional include directories,可以指定額外的包含目錄,一般是相對于本項目的目錄,如..\Include。

  連接參數的設置。主要通過IDE的菜單項Project->Settings->Link頁來完成。我們可以看到這一頁的最下面Project Options中的內容,一般如下:

  /nologo /subsystem:windows /incremental:yes /pdb:"Debug/WritingDlgTest.pdb" /debug /machi

  ne:I386 /out:"Debug/WritingDlgTest.exe" /pdbtype:sept

下面我們分別來看一下Category中的各項設置。

  1) General:一些總體設置。可以設置生成的文件路徑、文件名;連接的庫文件;Generate debug info,生成Debug信息到.PDB文件(具體格式可以在Category->Debug中設置);Ignore All Default Libraries,放棄所有默認的庫連接;Link Incrementally,通過生成. ILK文件實現遞增式連接以提高后續連接速度,但一般這種方式下生成的文件(EXE或DLL)較大;Generate Mapfile,生成.MAP文件記錄模塊相關信息;Enable Profiling,這個參數通常與Generate Mapfile參數同時使用,而且如果產生Debug信息的話,不能用.PDB文件,而且必須用Microsoft Format。

  2) Customize:這里可以進行使用程序數據庫文件的設置。Force File Output ,強制產生輸出文件(EXE或DLL);Print Progress Messages,可以將連接過程中的進度信息輸出到Output窗口。

  3) Debug:設置是否生成調試信息,以及調試信息的格式。格式可以有Microsoft Format、COFF Format(Common Object File Format)和Both Formats三種選擇;Separate Types,表示將Debug格式信息以獨立的.PDB文件存放,還是直接放在各個源文件的.PDB文件中。選中的話,表示采用后者的方式,這種方式調試啟動比較快。

  4) Input:這里可以指定要連接的庫文件,放棄連接的庫文件。還可以增加額外的庫文件目錄,一般是相對于本項目的目錄,如..\Lib。Force Symbol References,可以指定連接特定符號定義的庫。

  5) Output:Base Address可以改變程序默認的基地址(EXE文件默認為0x400000,DLL默認為x10000000),操作系統裝載一個程序時總是試著先從這個基地址開始。Entry-Point Symbol可以指定程序的入口地址,一般為一個函數名(且必須采用__stdcall調用約定)。一般Win32的程序,EXE的入口為WinMain,DLL的入口為DllEntryPoint;最好讓連接器自動設置程序的入口點。默認情況下,通過一個C的運行時庫函數來實現:控制臺程序采用mainCRTStartup (或wmainCRTStartup)去調用程序的main (或wmain)函數;Windows程序采用WinMainCRTStartup (或 wWinMainCRTStartup)調用程序的WinMain (或 wWinMain,必須采用__stdcall調用約定);DLL采用_DllMainCRTStartup調用DllMain函數(必須采用__stdcall調用約定)。Stack allocations,用以設置程序使用的堆棧大小(請使用十進制),默認為1兆字節。Version Information告訴連接器在EXE或DLL文件的開始部分放上版本號。

  值得注意的是,上面各個參數是大小寫敏感的;在參數后加上“-”表示該參數無效;各個參數值選項

  有“*”的表示為該參數的默認值;可以使用頁右上角的“Reset”按鈕來恢復該頁的所有默認設置。

  其它一些參數設置

  1) Project->Settings->General,可以設置連接MFC庫的方式(靜態或動態)。如果是動態連

  接,在你的軟件發布時不要忘了帶上MFC的DLL。

  2) Project->Settings->Debug,可以設置調試時運行的可執行文件,以及命令行參數等。

  3) Project->Settings->Custom Build,可以設置編譯/連接成功后自動執行一些操作。比較有

  用的是,寫COM時希望IDE對編譯通過的COM文件自動注冊,可以如下設置:

  Description: Register COM

  Commands: regsvr32 /s /c $(TargetPath)

  echo regsvr32 exe.time > $(TargetDir)\$(TargetName).trg

  Outputs: $(TargetDir)\$(TargetName).trg

  4) Tools->Options->Directories,設置系統的Include、Library路徑。



  一些小竅門(針對Visual C++)

  1) 有時候,你可能在編譯的時候,計算機突然非法關機了(可能某人不小心碰了電源或你的內存不穩定等原因)。當你重啟機器后打開剛才的項目,重新進行編譯,發現IDE會崩掉。你或許以為你的編譯器壞了,其實不然(你試試編譯其它項目,還是好的!),你只要將項目的.ncb、.opt、.aps、.clw文件以及Debug、Release目錄下的所有文件都刪掉,然后重新編譯就行了。

  2) 如果你想與別人共享你的源代碼項目,但是把整個項目做拷貝又太大。你完全可以刪掉以下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目錄下的所有文件。

  3) 當你的Workspace中包含多個Project的時候,你可能不能直觀地、一眼看出來哪個是當前項目。可以如下設置:Tools->Options->Format,然后在Category中選擇Workspace window,改變其默認的字體(比如設成Fixedsys)就行了。

  4) 如何給已有的Project改名字?將該Project關掉。然后以文本格式打開.dsp文件,替換原來的Project名字即可。

  5) VC6對類成員的智能提示功能很有用,但有時候會失靈。你可以先關掉項目,將.clw和.ncb刪掉,然后重新打開項目,點擊菜單項View->ClassWizard,在彈出的對話框中按一下“Add All”按鈕;重新Rebuild All。應該可以解決問題。


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲天堂成人在线观看| 一区二区av在线| 国产精品久久婷婷六月丁香| 国产农村妇女毛片精品久久莱园子 | 亚洲主播在线| 欧美激情国产高清| 影音欧美亚洲| 久久国产婷婷国产香蕉| 夜夜嗨av一区二区三区四区| 欧美91视频| 亚洲精品一区二区三区蜜桃久| 蜜臀va亚洲va欧美va天堂| 午夜精品久久久久久久99水蜜桃| 国产精品高潮呻吟久久av黑人| 一本到12不卡视频在线dvd| 亚洲国产毛片完整版| 蜜桃精品一区二区三区 | 亚洲午夜久久久久久久久电影院| 亚洲成人在线视频网站| 欧美高清在线| 99这里只有精品| 亚洲片国产一区一级在线观看| 免费欧美高清视频| 久久精品视频在线| 国产精品激情电影| 亚洲精品之草原avav久久| 蜜臀久久久99精品久久久久久| 久久成人综合网| 在线观看久久av| 欧美激情偷拍| 欧美日韩国产天堂| 亚洲欧美变态国产另类| 亚洲影院色无极综合| 国产日韩在线看| 麻豆精品精华液| 蜜臀久久久99精品久久久久久| 亚洲肉体裸体xxxx137| 最近看过的日韩成人| 欧美日韩一区二区三| 亚洲一区国产| 午夜影院日韩| 亚洲第一在线综合网站| 欧美另类视频| 久久人人97超碰国产公开结果| 激情久久久久久久| 欧美91大片| 欧美福利一区| 亚洲午夜视频在线| 欧美一区二视频| 91久久精品美女高潮| 一本色道久久综合亚洲精品小说 | 欧美成人精品一区二区| 在线视频日韩| 久久精品国产亚洲高清剧情介绍 | 99精品免费| 国产午夜精品一区理论片飘花 | 国产欧美精品一区aⅴ影院| 亚洲一区二区三区国产| 欧美一区二区免费| 日韩一级大片在线| 欧美永久精品| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲欧美综合精品久久成人| 欧美激情在线有限公司| 久久综合导航| 亚洲男人天堂2024| 麻豆成人精品| 久久国产日韩| 欧美婷婷六月丁香综合色| 久久免费视频在线| 欧美午夜在线观看| 亚洲国产精品一区二区久| 国产精品一卡二| 亚洲福利视频二区| 国产日韩在线看片| 亚洲特黄一级片| 99精品视频免费在线观看| 久久精品30| 亚洲一区免费视频| 欧美片第一页| 亚洲二区视频在线| 亚洲国产精品高清久久久| 欧美一区二区三区视频在线| 亚洲欧美日韩在线不卡| 欧美日韩精品高清| 亚洲人成绝费网站色www| 永久久久久久| 久久久99精品免费观看不卡| 欧美一级大片在线观看| 欧美性开放视频| 日韩午夜在线| 亚洲天堂av在线免费观看| 欧美精品一区视频| 亚洲国产日韩欧美在线图片| 亚洲国产综合视频在线观看| 久久久久青草大香线综合精品| 久久久久久久久久看片| 国产亚洲一级高清| 久久精品国产第一区二区三区最新章节 | 国产精品久久久免费| 亚洲免费av网站| aaa亚洲精品一二三区| 欧美成ee人免费视频| 亚洲电影毛片| 亚洲美女视频在线观看| 欧美激情一区二区三级高清视频| 欧美高清成人| 亚洲欧美国产高清| 欧美日韩亚洲一区二| 亚洲精品久久久久久久久久久久久 | 亚洲黄色在线看| 亚洲精选在线| 欧美特黄一级| 午夜精品久久久久久久99水蜜桃| 久久精品视频在线看| 又紧又大又爽精品一区二区| 久久综合国产精品| 久久久久久欧美| 亚洲欧美www| 久久精品视频在线观看| 一区二区在线不卡| 欧美区国产区| 亚洲主播在线观看| 麻豆成人在线| 一区二区高清视频在线观看| 国产精品欧美久久| 久久精品视频在线免费观看| 亚洲电影免费观看高清完整版在线观看| 亚洲卡通欧美制服中文| 国产精品日韩精品欧美精品| 久久狠狠婷婷| 亚洲欧洲一区二区天堂久久| 亚洲欧美日韩综合| 在线观看福利一区| 欧美视频中文字幕在线| 久久国产精品电影| 日韩视频精品在线| 久色婷婷小香蕉久久| 在线综合亚洲| 尤物九九久久国产精品的特点| 欧美日韩在线第一页| 久久av最新网址| 亚洲剧情一区二区| 久久深夜福利| 亚洲在线国产日韩欧美| 136国产福利精品导航| 国产精品久久久久毛片大屁完整版| 欧美专区日韩视频| 亚洲视频欧美视频| 亚洲国产成人久久| 久久精品一区四区| 亚洲制服丝袜在线| 亚洲精品小视频在线观看| 国内精品久久久久久影视8| 欧美日韩一区在线播放| 久久综合色综合88| 欧美在线观看视频在线| 亚洲视频在线看| 亚洲日本视频| 亚洲高清网站| 欧美高清成人| 久久综合给合久久狠狠狠97色69| 亚洲欧美日韩一区| 亚洲视频在线观看免费| 亚洲精品国产品国语在线app| 精品不卡一区| 黄色成人片子| 国产在线日韩| 国产在线高清精品| 国产亚洲午夜| 好男人免费精品视频| 国产一区二区三区成人欧美日韩在线观看| 国产精品99免视看9| 欧美日韩91| 欧美日韩直播| 欧美在线观看www| 牛人盗摄一区二区三区视频| 亚洲视频在线播放| 日韩视频在线你懂得| 亚洲国产精品一区二区第四页av | 亚洲国产精品一区二区三区| 国产亚洲a∨片在线观看| 国产精品青草综合久久久久99 | 亚洲欧美国产日韩中文字幕| 日韩视频在线观看一区二区| 亚洲激情在线播放| 亚洲狠狠丁香婷婷综合久久久| 在线电影一区| 亚洲国产一区视频| 亚洲精品欧美日韩专区| 99亚洲精品| 亚洲曰本av电影| 欧美一区二区三区免费视| 久久爱www久久做| 久久综合色天天久久综合图片| 欧美77777| 亚洲精品视频在线观看免费| 一区二区三区高清不卡| 性久久久久久久久久久久| 久久精品人人做人人爽|