Question:
VS或者VC里的那些工程是怎么回事?怎么使用它們創(chuàng)建并編譯C語言或C++代碼涩金?還有那些以“#”開頭的東西有什么作用哪痰?
Answer:
至于安裝:
如何在Win10安裝VC++6.0 诈唬,如何用VC++6.0新建項目并寫代碼,以及如何安裝VS2017并寫代碼宁否,參考鏈接窒升。
至于多文件編譯以及為何每次寫代碼要重建項目:
這里以VC++6.0為例,從新建工程到多文件編譯慕匠,可以跟著一起動手做一下:
選擇工程選項卡,從上到下分別是:ATL COM AppWizard絮重、Cluster Resource Type Wizard冤寿、Custom AppWizard、Database Project青伤、DevStudio Add-in Wizard督怜、Extended Stored Proc Wizard、ISAPI Extension Wizard狠角、Makefile号杠、MFC ActiveX ControlWizard、MFC AppWizard(dll)丰歌、MFC AppWizard(exe)姨蟋、Utility Project、Win32 Application立帖、Win32 Console Application眼溶、Win32 Dynamic-Link Library、Win32 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里
這就是一個項目的骨架了毛甲,在VC++6.0里為Source Files(源文件,以后綴名.c或.cpp結(jié)尾),Header Files(頭文件,以.h結(jié)尾)敞恋,Resource Files(資源文件丽啡,初期用不到谋右,不做過多介紹)硬猫。
這里選擇C/C++Header File改执,程序的頭文件啸蜜,右邊選中添加到工程,文件名填以.h結(jié)尾的頭文件名辈挂,位置一般默認本工程目錄下即可衬横,如果有需要可以更改到其它位置。
這里選擇C++ Source File,C++源文件(C語言也選這個)蜂林,然后選上添加到工程,因為是C語言程序拇泣,所以文件名以.c結(jié)尾噪叙,如果是C++程序,以.cpp結(jié)尾即可霉翔。
然后在頭文件Test.h里寫上程序所需要的頭文件即可睁蕾,每次需要添加的頭文件都可以寫進這個文件里,例如這樣:
然后在源程序里寫上以下測試代碼债朵,只需在源文件里用#include用雙引號把剛才的頭文件名包含進來即可子眶,如果編譯報錯,找不到頭文件序芦,那么文件名正確后在引號里加入完整路徑即可臭杰。
然后編譯,調(diào)試谚中,若沒有錯誤運行這個程序渴杆。假設這次代碼寫完了,需要關閉藏杖,
然后正常關閉即可将塑,等到再次使用時,打開VC++6.0
再查找范圍欄里選擇之前使用的工程保存的目錄蝌麸,然后文件類型選擇工程(.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)容都與上面那些圖一樣注釋掉了伦仍,沒有大改動结窘。
一般在這里定義一些自定義函數(shù)需要用到的宏,以及自定義函數(shù)的定義呢铆,例如本例中的Max()函數(shù)的定義晦鞋,函數(shù)的定義形參一般不用給出形參名,只需指明類型即可棺克,當然指定了形參名也沒錯悠垛。
在max.c里寫入函數(shù)的定義,同時引入自己的頭文件max.h娜谊,同時由于max.h里引入了Test.h,所以這里也就相當于引入了max.h和Test.h中的內(nèi)容确买。
可以在一個單獨的源文件里指定程序的入口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)容
VC++6.0環(huán)境配置
這里包含可執(zhí)行文件舌界、Include files掘譬、Library files泰演、Source files四個內(nèi)容呻拌,對我們有用的一般是Include files和Library files
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