日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC6.0环境设置说明

發布時間:2025/3/21 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC6.0环境设置说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
VC環境設置說明

http://blog.sina.com.cn/s/blog_4bb59dc40100fcet.html


所謂:“工欲善其事,必先利其器”。如果我們精于VC開發環境,我們是不是能夠做得更加游刃有余呢?

先來看一下VC的處理流程,大致分為兩步:編譯和連接。源文件通過編譯生成了.obj文件;所有.obj文件和.lib文件通過連接生成.exe文件或.dll文件。

編譯參數的設置。主要通過VC的菜單項Project->Settings->C/C++頁來完成。我們可以看到這一頁的最下面ProjectOptions中的內容,一般如下:

/nologo /MDd /W3 /Gm /GX /ZI /Od /D “WIN32″ /D “_DEBUG” /D“_WINDOWS” /D “_AFXDLL” /D “_MBCS” /Fp”Debug/WritingDlgTest.pch”/Yu”stdafx.h” /Fo”Debug/” /Fd”Debug/” /FD /GZ /c

各個參數代表的意義,可以參考Msdn。

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

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

3) CodeGeneration:Processor表示代碼指令優化,可以為80386、80486、Pentium、PentiumPro,或者Blend表示混合以上各種優化。Use run-timelibrary用以指定程序運行時使用的運行時庫(單線程或多線程,Debug版本或Release版本),有一個原則就是,一個進程不要同時使用幾個版本的運行時庫。Single-Threaded,靜態連接LIBC.LIB庫;DebugSingle-Threaded,靜態連接LIBCD.LIB庫;Multithreaded,靜態連接LIBCMT.LIB庫;DebugMultithreaded,靜態連接LIBCMTD.LIB庫;MultithreadedDLL,動態連接MSVCRT.DLL庫;Debug MultithreadedDLL,動態連接MSVCRTD.DLL庫。連接了單線程庫就不支持多線程調用,連接了多線程庫就要求創建多線程的應用程序。Callingconvention可以用來設定調用約定,有三種:__cdecl、__fastcall和__stdcall。各種調用約定的主要區別在于,函數調用時,函數的參數是從左到右壓入堆棧還是從右到左壓入堆棧;在函數返回時,由函數的調用者來清理壓入堆棧的參數還是由函數本身來清理;以及在編譯時對函數名進行的命名修飾(可以通過ListingFiles看到各種命名修飾方式)。Struct memberalignment用以指定數據結構中的成員變量在內存中是按幾字節對齊的,根據計算機數據總線的位數,不同的對齊方式存取數據的速度不一樣。這個參數對數據包網絡傳輸等應用尤為重要,不是存取速度問題,而是數據位的精確定義問題,一般在程序中使用#pragmapack來指定。

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

char *sBuffer = “This is a character buffer”;

char *tBuffer = “This is a character buffer”;

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

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

6) Optimizations:代碼優化設置。可以選擇Maximize Speed生成最快速的代碼,或MinimizeSize生成最小尺寸的程序,或者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 functionexpansion,內聯函數擴展的三種優化(使用內聯可以節省函數調用的開銷,加快程序速度):Disable不使用內聯;Only__inline,僅函數定義前有inline或__inline標記使用內聯;AnySuitable,除了inline或__inline標記的函數外,編譯器“覺得”應該使用內聯的函數,都使用內聯。
7) PrecompiledHeaders:預編譯頭文件的設置。使用預編譯可以提高重復編譯的速度。VC一般將一些公共的、不大變動的頭文件(比如afxwin.h等)集中放到stdafx.h中,這一部分代碼就不必每次都重新編譯(除非是RebuildAll)。

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

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

/nologo /subsystem:windows /incremental:yes/pdb:”Debug/WritingDlgTest.pdb” /debug /machine:I386/out:”Debug/WritingDlgTest.exe” /pdbtype:sept

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

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

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

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

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

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

值得注意的是,上面各個參數是大小寫敏感的;在參數后加上“-”表示該參數無效;各個參數值選項有“*”的表示為該參數的默認值;可以使用頁右上角的“Reset”按鈕來恢復該頁的所有默認設置。

其它一些參數設置。

1)Project->Settings->General,可以設置連接MFC庫的方式(靜態或動態)。如果是動態連接,在你的軟件發布時不要忘了帶上MFC的DLL。

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

3) Project->Settings->CustomBuild,可以設置編譯/連接成功后自動執行一些操作。比較有用的是,寫COM時希望VC對編譯通過的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路徑。

一些小竅門

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

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

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

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

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

6)如何解決unexpected end of file while looking forprecompiled headerdirective的問題?右鍵點工程名,選設置,然后選c/c++屬性頁,再選catagory選單中選precompiled header ,將選項置成no use 或者autometic

?? 編譯選項對編程人員有時候是相當的模糊,下面對其做個總結:

/Od 禁用優化(默認值) disable optimizations (default)
/Ox 最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啟用全局優化 enable global optimization
/Oy[-] 啟用框架指針省略 enable frame pointer omission
/Oi 啟用內建函數 enable intrinsic functions


-代碼生成-
/G3 為 80386 進行優化 optimize for 80386
/G4 為 80486 進行優化 optimize for 80486
/GR[-] 啟用 C++ RTTI enable C++ RTTI
/G5 為 Pentium 進行優化 optimize for Pentium
/G6 為 Pentium Pro 進行優化 optimize for Pentium Pro
/GX[-] 啟用 C++ 異常處理(與 /EHsc 相同) enable C++ EH (same as /EHsc)
/EHs 啟用同步 C++ 異常處理 enable synchronous C++ EH
/GD 為 Windows DLL 進行優化 optimize for Windows DLL
/GB 為混合模型進行優化(默認) optimize for blended model (default)
/EHa 啟用異步 C++ 異常處理 enable asynchronous C++ EH
/Gd __cdecl 調用約定 __cdecl calling convention
/EHc extern“C”默認為 nothrow extern "C" defaults to nothrow
/Gr __fastcall 調用約定 __fastcall calling convention
/Gi[-] 啟用增量編譯 enable incremental compilation
/Gz __stdcall 調用約定 __stdcall calling convention
/Gm[-] 啟用最小重新生成 enable minimal rebuild
/GA 為 Windows 應用程序進行優化 optimize for Windows Application
/Gf 啟用字符串池 enable string pooling
/QIfdiv[-] 啟用 Pentium FDIV 修復 enable Pentium FDIV fix
/GF 啟用只讀字符串池 enable read-only string pooling
/QI0f[-] 啟用 Pentium 0x0f 修復 enable Pentium 0x0f fix
/Gy 分隔鏈接器函數 separate functions for linker
/GZ 啟用運行時調試檢查 enable runtime debug checks
/Gh 啟用鉤子函數調用 enable hook function call
/Ge 對所有函數強制堆棧檢查 force stack checking for all funcs
/Gs[num] 禁用堆棧檢查調用 disable stack checking calls


-輸出文件-
/Fa[file] 命名程序集列表文件 name assembly listing file
/Fo 命名對象文件 name object file
/FA[sc] 配置程序集列表 configure assembly listing
/Fp 命名預編譯頭文件 name precompiled header file
/Fd[file] 命名 .PDB 文件 name .PDB file
/Fr[file] 命名源瀏覽器文件 name source browser file
/Fe 命名可執行文件 name executable file
/FR[file] 命名擴展 .SBR 文件 name extended .SBR file
/Fm[file] 命名映射文件 name map file


-預處理器-
/FI 命名強制包含文件 name forced include file
/C 不吸取注釋 don't strip comments
/U 移除預定義宏 remove predefined macro
/D{=|#} 定義宏 define macro
/u 移除所有預定義宏 remove all predefined macros
/E 將預處理定向到標準輸出 preprocess to stdout
/I 添加到包含文件的搜索路徑 add to include search path
/EP 將預處理定向到標準輸出,不要帶行號 preprocess to stdout, no #line
/X 忽略“標準位置” ignore "standard places"
/P 預處理到文件 preprocess to file


-語言-
/Zi 啟用調試信息 enable debugging information
/Zl 忽略 .OBJ 中的默認庫名 omit default library name in .OBJ
/ZI 啟用調試信息的“編輯并繼續”功能 enable Edit and Continue debug info
/Zg 生成函數原型 generate function prototypes
/Z7 啟用舊式調試信息 enable old-style debug info
/Zs 只進行語法檢查 syntax check only
/Zd 僅要行號調試信息 line number debugging info only
/vd{0|1} 禁用/啟用 vtordisp disable/enable vtordisp
/Zp[n] 在 n 字節邊界上包裝結構 pack structs on n-byte boundary
/vm 指向成員的指針類型 type of pointers to members
/Za 禁用擴展(暗指 /Op) disable extensions (implies /Op)
/noBool 禁用“bool”關鍵字 disable "bool" keyword
/Ze 啟用擴展(默認) enable extensions (default)


- 雜項 -
/?, /help 打印此幫助消息 print this help message
/c 只編譯,不鏈接 compile only, no link
/W 設置警告等級(默認 n=1) set warning level (default n=1)
/H 最大化外部名稱長度 max external name length
/J 默認 char 類型是 unsigned default char type is unsigned
/nologo 取消顯示版權消息 suppress copyright message
/WX 將警告視為錯誤 treat warnings as errors
/Tc 將文件編譯為 .c compile file as .c
/Yc[file] 創建 .PCH 文件 create .PCH file
/Tp 將文件編譯為 .cpp compile file as .cpp
/Yd 將調試信息放在每個 .OBJ 中 put debug info in every .OBJ
/TC 將所有文件編譯為 .c compile all files as .c
/TP 將所有文件編譯為 .cpp compile all files as .cpp
/Yu[file] 使用 .PCH 文件 use .PCH file
/V 設置版本字符串 set version string
/YX[file] 自動的 .PCH 文件 automatic .PCH
/w 禁用所有警告 disable all warnings
/Zm 最大內存分配(默認為 %) max memory alloc (% of default)


-鏈接-
/MD 與 MSVCRT.LIB 鏈接 link withMSVCRT.LIB
/MDd 與 MSVCRTD.LIB 調試庫鏈接 link with MSVCRTD.LIB debug lib
/ML 與 LIBC.LIB 鏈接 link with LIBC.LIB
/MLd 與 LIBCD.LIB 調試庫鏈接 link with LIBCD.LIB debug lib
/MT 與 LIBCMT.LIB 鏈接 link with LIBCMT.LIB
/MTd 與 LIBCMTD.LIB 調試庫鏈接 link with LIBCMTD.LIB debuglib

/LD 創建 .DLL Create .DLL
/F 設置堆棧大小 set stack size
/LDd 創建 .DLL 調試庫 Create .DLL debug libary
/link [鏈接器選項和庫] [linker options and libraries]

總結

以上是生活随笔為你收集整理的VC6.0环境设置说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人舔女人下部高潮全视频 | 国产农村妇女毛片精品久久麻豆 | 亚洲成年人网 | 亚洲av高清一区二区三区 | 国产精品视频大全 | 欧美做受xxxxxⅹ性视频 | 精品久久国产字幕高潮 | 福利一区二区在线观看 | 日韩午夜 | 国产精品乱码久久久久久久久 | 国产精品丝袜视频无码一区69 | 欧美一区二区三区视频 | 在线亚洲自拍 | 香蕉久久久 | 波多野结衣一区二区三区在线观看 | 免费小视频在线观看 | 少妇又紧又色又爽又刺激 | 在线观看深夜视频 | sao虎视频在线精品永久 | 日韩亚洲精品视频 | av片网 | 国产午夜激情 | 青青草手机在线观看 | 国产无毛片 | 久久久精品久久 | 国产男男gay | 夜夜操夜夜干 | 四虎影院永久 | 九月丁香婷婷 | 亚洲三级精品 | 亚洲欧美国产高清 | 成人拍拍拍 | 日本一区二区免费视频 | 美女视频国产 | 欧美精品www| 天堂а√在线中文在线鲁大师 | 欧美成人片在线观看 | 免费成人深夜小野草 | 日韩中文字幕av | 欧美成人a视频 | 2019中文字幕在线 | 欲求不满的岳中文字幕 | 午夜性色福利影院 | 福利片网址 | 免费黄色高清视频 | 男女性杂交内射妇女bbwxz | chien国产乱露脸对白 | 亚日韩av| 法国极品成人h版 | 女人久久久 | 成人污在线 | 操白虎逼 | a国产视频| 一级免费在线观看 | 欧美电影一区二区三区 | 岳奶大又白下面又肥又黑水多 | 成人国产一区 | 亚洲第一页色 | 男女啪啪国产 | 福利免费视频 | 欧美在线日韩在线 | 亚洲国产精品久久久久婷蜜芽 | 成人综合一区 | 99ri国产在线 | 在线视频中文 | 国产一区在线视频观看 | av在线免费观看不卡 | 欧美黑吊大战白妞欧美大片 | 国产精品羞羞答答在线观看 | 亚洲风情亚aⅴ在线发布 | 日本天天色 | 一级特黄av | 深喉口爆一区二区三区 | 后入内射无码人妻一区 | 免费色片网站 | 懂色av蜜臂av粉嫩av | 五月婷婷色丁香 | 扒开女人屁股进去 | 天天鲁一鲁摸一摸爽一爽 | 69精品一区二区三区 | 午夜神器在线观看 | 欧美人和黑人牲交网站上线 | 成人三级在线播放 | 欧美呦呦 | 岛国精品一区二区三区 | 欧美黄色一级视频 | 国产1区 | av字幕网 | 亚洲天堂男人天堂 | 青娱乐超碰 | 91色区| 久久免费片 | 国产后入清纯学生妹 | 波多野结衣高清视频 | 日本猛少妇色xxxxx猛叫 | www伊人网 | 色综合久久五月 | 男人干女人视频 | 国产专区在线视频 |