VS與VC++6.0項目與工程新手入門

Question:


VS或者VC里的那些工程是怎么回事?怎么使用它們創(chuàng)建并編譯C語言或C++代碼涩金?還有那些以“#”開頭的東西有什么作用哪痰?

Answer:


至于安裝:

如何在Win10安裝VC++6.0 诈唬,如何用VC++6.0新建項目并寫代碼,以及如何安裝VS2017并寫代碼宁否,參考鏈接窒升。

至于多文件編譯以及為何每次寫代碼要重建項目:

這里以VC++6.0為例,從新建工程到多文件編譯慕匠,可以跟著一起動手做一下:


點擊文件(F)->新建饱须,或者Ctrl + N

選擇工程選項卡,從上到下分別是:ATL COM AppWizard絮重、Cluster Resource Type Wizard冤寿、Custom AppWizardDatabase Project青伤、DevStudio Add-in Wizard督怜、Extended Stored Proc WizardISAPI Extension Wizard狠角、Makefile号杠、MFC ActiveX ControlWizardMFC AppWizard(dll)丰歌、MFC AppWizard(exe)姨蟋、Utility ProjectWin32 Application立帖、Win32 Console Application眼溶、Win32 Dynamic-Link LibraryWin32 Static Library晓勇,(以官方文檔為主)簡單介紹參考https://zhidao.baidu.com/question/981441449787893859.html

(中途發(fā)現(xiàn)一個資源網(wǎng)http://www.icodeguru.com/,嘿嘿嘿)

我們這里選擇Win32 Console Application(Win32控制臺應用程序)堂飞,也就是程序后運行的那個黑框框,另外提一句绑咱,如果選Win32 Application(Win32應用程序)玛界,就是非MFC框架Windows程序陨仅,可以參考《Windows程序設計》。

在工程名稱里填工程的名字照藻,例如Test,在位置選擇想要把代碼存儲到的位置严嗜,默認在C:\Program Files (x86)\Microsoft Visual Studio\MyProjects里

選擇空工程即可评雌,然后點完成,再點確定
然后點左側(cè)FileView,再點上面Test files旁邊的+號瀏覽文件

這就是一個項目的骨架了毛甲,在VC++6.0里為Source Files(源文件,以后綴名.c或.cpp結(jié)尾),Header Files(頭文件,以.h結(jié)尾)敞恋,Resource Files(資源文件丽啡,初期用不到谋右,不做過多介紹)硬猫。


然后Ctrl+N新建,選擇文件

這里選擇C/C++Header File改执,程序的頭文件啸蜜,右邊選中添加到工程,文件名填以.h結(jié)尾的頭文件名辈挂,位置一般默認本工程目錄下即可衬横,如果有需要可以更改到其它位置。

然后Ctrl+N新建终蒂,還是選擇文件

這里選擇C++ Source File,C++源文件(C語言也選這個)蜂林,然后選上添加到工程,因為是C語言程序拇泣,所以文件名以.c結(jié)尾噪叙,如果是C++程序,以.cpp結(jié)尾即可霉翔。

創(chuàng)建完后長這樣

然后在頭文件Test.h里寫上程序所需要的頭文件即可睁蕾,每次需要添加的頭文件都可以寫進這個文件里,例如這樣:

頭文件一般結(jié)構(gòu)

然后在源程序里寫上以下測試代碼债朵,只需在源文件里用#include用雙引號把剛才的頭文件名包含進來即可子眶,如果編譯報錯,找不到頭文件序芦,那么文件名正確后在引號里加入完整路徑即可臭杰。

比較大小測試程序

然后編譯,調(diào)試谚中,若沒有錯誤運行這個程序渴杆。假設這次代碼寫完了,需要關閉藏杖,

Ctrl+S保存后點擊文件->關閉工作空間

然后正常關閉即可将塑,等到再次使用時,打開VC++6.0

Ctrl+O或者點擊文件->打開

再查找范圍欄里選擇之前使用的工程保存的目錄蝌麸,然后文件類型選擇工程(.dsp)点寥,再選擇上次的工程如Test.dsp并雙擊,(名稱就是上次新建的工程名,以.dps結(jié)尾)来吩,之后文件名欄里就會變成Test,接著打開就好了

條件編譯

如果不想使用上次代碼敢辩,可以在代碼開頭加上#if 0蔽莱,在結(jié)尾加上#endif,如圖中所示戚长,在#if 0 和 #endif 中間的代碼盗冷,編譯器在預編譯階段將會忽略,不會被編譯同廉。

測試

接著就可以在#if 0 和#endif 以外的區(qū)域編寫代碼了仪糖,例如#if 0以上區(qū)域,#endif以下區(qū)域迫肖,之后在編譯運行即可锅劝。每次需要丟棄的代碼,既可以注釋掉蟆湖,也可以用一對#if 0和#endif 條件編譯忽略掉,也可以全選故爵,刪掉(雖然不建議這么做,畢竟現(xiàn)在寫的代碼以后可能還會用到)隅津,當然以上可以都不選诬垂,而是在現(xiàn)有的代碼基礎上再添加內(nèi)容。

至于多文件聯(lián)合編譯

以下Test.c與Test.h中的無關內(nèi)容都與上面那些圖一樣注釋掉了伦仍,沒有大改動结窘。

自定義頭文件max.h

一般在這里定義一些自定義函數(shù)需要用到的宏,以及自定義函數(shù)的定義呢铆,例如本例中的Max()函數(shù)的定義晦鞋,函數(shù)的定義形參一般不用給出形參名,只需指明類型即可棺克,當然指定了形參名也沒錯悠垛。

函數(shù)定義源文件max.c

在max.c里寫入函數(shù)的定義,同時引入自己的頭文件max.h娜谊,同時由于max.h里引入了Test.h,所以這里也就相當于引入了max.h和Test.h中的內(nèi)容确买。

測試源文件main.c

可以在一個單獨的源文件里指定程序的入口main()函數(shù),例如本例中的main.c纱皆,同時也要包含進用到的頭文件湾趾,例如本例中的max.h中定義的Max()函數(shù),然后編譯派草,調(diào)試搀缠,運行即可。(在VC++6.0里把max.h中的函數(shù)聲明注釋掉也可運行近迁,但在VS里跨文件艺普,必須給出函數(shù)聲明)

至于以#開頭的東西,一些常用的#開頭

#define?? 宏名 ? 宏內(nèi)容 ?

宏定義,在編譯階段歧譬,程序中除雙引號中外岸浑,出現(xiàn)的宏名都被宏內(nèi)容所替換

#pragma once??????????????

保證文件只被編譯器編譯一次

#ifdef? 宏名

#else

#endif

在這里解釋為如果宏名被定義,則編譯#ifdef 到#else中的內(nèi)容瑰步,如果未定義矢洲,則編譯#else到#endif中的內(nèi)容。也可以不使用#else缩焦。

#if 條件

#endif

和if-else結(jié)構(gòu)一樣读虏,如果條件為真,則編譯之間的內(nèi)容

#if ,#ifdef ,#ifndef等更詳細說明與示例

VC++6.0環(huán)境配置


工具->選項
目錄

這里包含可執(zhí)行文件舌界、Include files掘譬、Library files泰演、Source files四個內(nèi)容呻拌,對我們有用的一般是Include files和Library files

第一個紅框里的內(nèi)容分別是新建、刪除睦焕、上移藐握、下移
與上圖一樣

Include files目錄為用#include<>包含進的頭文件目錄,Library files目錄為庫文件目錄垃喊,一般在預編譯階段猾普,編譯器就會按這兩個目錄路徑欄里指定的目錄從上到下依次查找,直到找到引入的頭文件或庫文件本谜,否則就會報找不到頭文件或缺失符號錯誤初家。

如果下載安裝了最新的SDK,或者其它頭文件或庫文件乌助,就需要在這里指明安裝路徑溜在。

寫在最后

VC++6.0的入門到這里就告一段落,如果你覺得這個IDE界面太丑他托,那么可以試試VS2017之類更強大掖肋,界面更加友好的,但也特別臃腫的IDE赏参。

下一步

如果這些都掌握了志笼,并且對開發(fā)出自己的安全工具很有興趣,可以試試《C++黑客編程揭秘與防范》把篓,這里能夠帶你入門纫溃,密碼是協(xié)會名縮寫

如果想更進一步,那么推薦這本書《徹底研究 黑客編程技術揭秘與攻防實戰(zhàn)》韧掩,密碼鏈接紊浩,同樣,密碼還是協(xié)會名縮寫。加密的目的不是為了阻止下載郎楼,而是給協(xié)會內(nèi)部一些便利與宣傳

至于想寫出更加強大的程序万伤,可以試試《大話數(shù)據(jù)結(jié)構(gòu)》,這里面的多種數(shù)據(jù)結(jié)構(gòu)經(jīng)常會用到

如果還好奇的話呜袁,國內(nèi)外各大論壇總有一個敌买,是你想要的菜

什么?你說Linux啊阶界,布星布星虹钮,作為新手,要有新手的覺悟膘融,知道這么多干嘛(*Φ皿Φ*)芙粱,想掛科啊,還是閑得沒事干啊

emmmmm,如果實在好奇的緊氧映,可以試試《鳥哥的Linux私房菜》春畔,然后想干嘛干嘛去

什么?覺得還不夠岛都,滿足不了你的胃口律姨?那么“Linux網(wǎng)絡編程大禮包”送給你

然后看完了還不知道干什么?那來和我交流交流經(jīng)驗臼疫,分享分享心得择份,順便爭得面紅耳赤,然后一起寫出個什么好玩且有趣的東西來

不知道怎么聯(lián)系我烫堤?可以在評論區(qū)里留下聯(lián)系方式荣赶,說不定我會過來看。當然了鸽斟,最大的可能是一段時間后我忘了這里的密碼還有鏈接QAQ

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拔创,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子湾盗,更是在濱河造成了極大的恐慌伏蚊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件格粪,死亡現(xiàn)場離奇詭異躏吊,居然都是意外死亡,警方通過查閱死者的電腦和手機帐萎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門比伏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人疆导,你說我怎么就攤上這事赁项。” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵悠菜,是天一觀的道長舰攒。 經(jīng)常有香客問我,道長悔醋,這世上最難降的妖魔是什么摩窃? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮芬骄,結(jié)果婚禮上猾愿,老公的妹妹穿的比我還像新娘。我一直安慰自己账阻,他們只是感情好蒂秘,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淘太,像睡著了一般姻僧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琴儿,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天段化,我揣著相機與錄音,去河邊找鬼造成。 笑死,一個胖子當著我的面吹牛雄嚣,可吹牛的內(nèi)容都是我干的晒屎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缓升,長吁一口氣:“原來是場噩夢啊……” “哼鼓鲁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起港谊,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骇吭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歧寺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燥狰,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年斜筐,在試婚紗的時候發(fā)現(xiàn)自己被綠了龙致。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡顷链,死狀恐怖目代,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤榛了,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布在讶,位于F島的核電站,受9級特大地震影響霜大,放射性物質(zhì)發(fā)生泄漏真朗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一僧诚、第九天 我趴在偏房一處隱蔽的房頂上張望遮婶。 院中可真熱鬧,春花似錦湖笨、人聲如沸旗扑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臀防。三九已至,卻和暖如春边败,著一層夾襖步出監(jiān)牢的瞬間袱衷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工笑窜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留致燥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓嫌蚤,卻偏偏與公主長得像断傲,于是被迫代替她去往敵國和親脱吱。 傳聞我的和親對象是個殘疾皇子认罩,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5箱蝠? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 27,486評論 1 45
  • 關于跑步跑步是一門很大的學問宦搬,跑步的目的決定了跑步的時間及跑步的速度乔外。比如說你的目的是簡肥床三,那么跑步必須持續(xù)地跑。...
    scarle閱讀 181評論 2 1
  • #輸入必有輸出# 不愧是最后一節(jié)課杨幼,期間一波三折撇簿。 提早跑完步聂渊,守在電腦面前等著開課四瘫,竟然連不上網(wǎng)絡了,打電話給售...
    Marks閱讀 814評論 0 1