Seznámení s Microsoft Visual C++
Popis odpovídá programu Visual Studio 2008, ale jiná prostředí mají podobné volby a nastavení (s jinými názvy)
Help je přístupný z prostředí nebo je na http://search.msdn.microsoft.com (home http://msdn.microsoft.com/cs-cz/default(en-us).aspx, nebo support http://msdn.microsoft.com/cs-cz/aa570318(en-us).aspx, dříve http://www.msdn.com/library (dnes přesměrováno do nové verze) ). V prostředí je pouze Help pro jazyk C a C++ a je dostupný přes F1 (je-li kurzor nad klíčovým slovem, pak help k tomuto výrazu). Na síti se zobrazí témata helpu také pro ostatní jazyky (Java, Pascal, C#, Basic, Fox Pro) takže je nutné pozorně vybírat, který odkaz patří pro C.
vlastní program se spouští z plochy ikonou
po spuštění se objeví prázdné prostředí. (Dále je možné spustit prostředí poklikem na již vytvořený projekt. Při pokliknutí na vytvořený zdrojový kód je nutné mu vytvořit projekt.)
budeme vytvářet konzolovou aplikaci. To je aplikace, která má vstup i výstup prostřednictvím konzoly (klávesnice, monitor)
nový projekt (aplikace) se založí ve volbě File New v záložce project. Zvolíme konzolovou aplikaci. V tomto výběru je možné i vytváření samostatných souborů v záložce Files (zdrojové i hlavičkové soubory přidávané do projektu)
Dále je nutné zařídit, aby se soubory ukládaly do adresáře s
právem zápisu, který se uchovává. To je adresář na Vašem síťovém
disku (nejčastěji P). Zvolíme jméno projektu.
Pozn. při zadávání
projektu se síťové disky nemusí v nabídce objevit (protože W mají s
NOVELLem problém) a proto je nutné tomu pomoci tak, že zapíšeme
cestu k disku – například P: a pak už bude disk vidět
Z
konzolových aplikací si zvolíme tu, ve které začínáme “od
začátku” tedy tu, která je úplně prázdná – „Win32
console application“ z bloku Visual C++ -> WIN32
(s položkou, která vytvoří prázdný soubor, nebo v dalších projektech
vytvoření pouze prázdného main „application settings->empty
project“).
Můžete zkusit vytvořit i projekt “zkratkou”. To je ten, který vytváří hlavní funkci _tmain a základní soubor s ní je přímo součástí projektu. Je nutné si uvědomit, že toto je speciální volba vázaná na tento překladač a při přenosu zdrojů do jiných překladačů budete mít problémy. Tento problém nastane i v případě, že takto vytvořeným projektem budete chtít překládat soubory přenesené z jiného prostředí. (soubory stdafx … jsou totiž určeny k optimalizaci překladu a k nim musí být příslušně nastaven projekt. Pokud tedy nevhodně zkombinujete nastavení projektu a přítomnost těchto souborů, dojde při překladu k chybě).
V případě „standardní“ instalace, by se nyní mělo v levé části plochy otevřít okno Solution explorer obsahující „strom“ projektu (header, resource, source file), který nyní neobsahuje žádné soubory (source files).
Vytvoříme soubor tak, že přes pravé tlačítko myši zvolíme Solution explorer->Source File -> Add -> New Item -> c++ file (jménu vnutíme příponu c, která zaručí překlad v jazyce C a ne C++). Pole solution explorer můžeme zobrazit v menu View/Solution explorer (ctrl+alt+L)
Pomocí stejné záložky ale s Existing Item můžete do projektu přidat již existující zdrojové soubory
Vepíšeme jednoduchý program (include stdio.h a tisk řetězce ve foru. V základní funkci main).
Pokud nad název hlavičkového souboru najedeme myší, můžeme ho pomocí pravého tlačítka otevřít.
V levé části okna je záložka ClassView, kde je možné sledovat proměnné (globální proměnné a funkce). Aktuálně je vidět jediná funkce a to funkce main (v sekci global functions ...). Poklikem na danou položku se dostaneme na její definici (zobrazí se nám a můžeme se do ní podívat).
V záložce, kterou jsme již viděli - SolutionExplorer, jsou zobrazeny soubory, které obsahuje projekt. Poklepnutím na ně se načtou a zobrazí.
Dopsaný program zkompilujte a spusťte. (viz zelená šipka v pravé horní části obrázku). Pokud potřebujete pouze spustit bez debugování a tak aby se okno nezavřelo a viděli jste výpisy, použijte StartWithoutDebugging (zelená prázdná šipka Ctrl+F5)
Pozn. Při překladu projektu na síťových discích dochází k chybě. Tuto chybu je možné odstranit tak, že budeme projekt překládat se statickými knihovnami, nebo je nutné nastavit překlad bez vloženého manifestu. Nastavení tohoto přepínače v prostředí ukazuje obrázek – Properties -> ManifestTool -> InputAndOutput -> EmbedManifest -> NO..
U hlavního nápisu (název projektu) v okně SolutionExplorer (zobrazen bold) jde poklikem na pravé tlačítko zobrazit menu, kde lze v properties provést nastavení z nichž vybírám: general – typ překladu knihoven, tj. zabudování knihoven do exe souboru (statické knihovny) nebo pomocí DLL (dynamické knihovny). Debugging – command arguments -text, který je možné zadat na “dosovskou řádku” jako argumenty spuštění programu. Zapište sem něco a zkontrolujte, zda je to předáno jako v parametru funkce main. V C/C++ je možno přepínat úrovně warningů (upozornění) a nebo nastavit warningy ať se chovají jako errory (chyby) – bez ošetření nelze tedy přeložit. C/C++-> Preprocessor – globální symboly (místo #define SYMBOL dodávaného do každého modulu) pro řízený překlad, které jsou známé při překladu každého modulu . Linker – debugging, debug info, mapfile. V C/C++->CodeGeneration je položku runtimeLibrary kde je možné nastavit zda je projekt linkován proti dynamickým knihovnám (.NET). Vybraná nastavení lze provádět i pro jednotlivé části projektu (soubory – moduly).
Tlačítka na liště (buttony) – klik myší v levé části (šedý proužek) editoru – přepnutí breakpointu (bod na kterém se provádění programu zastaví). Zelená šipka – spuštění programu, kdy se zastavuje na break pointech (po skončení programu zavře okno výpisů). Build/compile – compile vytváří obj soubor z jednoho zdrojového a hledá v něm chyby z hlediska jazyka. Build/ReBuild vytvoří postupně obj ze všech zdrojových souborů v programu a poté provede link – vytvoření spustitelného exe souboru. (project je aktuální projekt, solution je soubor projektů). Build (na rozdíl od rebuild) překládá pouze položky jichž se dotýkají změny provedené od posledního překladu. Rebuild je vhodné dát v případě změny properties nebo v okamžiku, kdy přehráváme soubory projektu soubory měněnými mimo projekt.
Položku Build -> CleanSolution provede vymazání většiny kompilátorem vytvořených souborů (*.exe, *.obj ...), proto je vhodné ho použít pokud chcete celý projekt archivovat (uložit zálohu, poslat mailem (školní mail jakýkoliv archiv se soubory *.exe nedoručí z důvodu možného výskytu virů) ...).
V okně (dole) s překladem je vidět jen konečný souhrn (počet warningů a errorů). Dá se však zvětšit, či listovat nahoru a potom jsou vidět i konkrétní chyby s textem (protokol o překladu) – snažte se je přeložit a pochopit co říkají. Poklikem se dostaneme do příslušného místa na které řádek upozorňuje.
Ve funkci main zapněte breakpoint a spusťte program (spustí i překlad je-li to nutné) pro zastavování na breakpointech (zelená šipka F5).Program se zastavil na řádku, který se má teprve provést. Při zastavení se objeví okna autos a watch, ve kterých je možné sledovat proměnné a jejich hodnoty. V okně autos jsou aktuální “viditelné” proměnné, v okně watch ty proměnné, které si vybereme (lze je do okna přidávat a rušit jejich zobrazení). Je možné zde proměnné i přetypovávat, to je, že můžeme char zobrazit jako znak, nebo jako číslo (x,d,c nebo přímo (char), (int)...), nebo můžeme zobrazit i součet či součin proměnných. Přepnutí mezi zobrazením hexa a dekadickým lze i pomocí pravého tlačítka myši. Dále se objeví nová tlačítková lišta debug, která zobrazuje tlačítka pro pohyb v programu – skok na řádek, provést jednu instrukci, provést jednu funkci, vyskočit z funkce ... Při pohybu myši nad tlačítkem vidíme příslušné horké klávesy.
K ladění (debugging) programu lze používat společně s breakpointy následující volby – provádění programu až do breakpointu StartDebugging (zelená šipka plná), spuštění programu a zastavení v místě kurzoru RunToCursor (pravé tlačítko myši na daném řádku), místo na kterém se právě nacházíte najdete pomocí ShowNextStatement (žlutá šipka), breakpoint může být spojen s podmínkou (například zastavit až proměnná i>4). Pokud program chceme provádět po jednotlivých příkazech, můžeme zvolit StepOver (řádky s velkou šipkou – znamená to, že se provádí příkazy po jednom, funkce se provede jako celek), nebo StepInto (řádky s malou šipkou – provádí se příkazy po jednom, do funkcí se vstupuje). Je možné vyskočit z funkce do funkce, která ji volala (například provedeme-li nechtěně StepInto) a to pomocí StepOut (řádky s šipkou nahoru). V případě, že se trasování ubírá špatným směrem, je možné program ukončit pomocí StopDebugging (modrý čtvereček), v dalším kroku se začíná trasovat od počátku. Restart provede ukončení současného prováděného programu a spoustí program znovu od počátku (ten se zastaví na případném breakpointu).
Je možné se podívat i na strojový kód překladu – pravým tlačítkem myši klikněte v prostoru okna zdrojů a zvolte GoToDisassembly. Zde je možné nastavit pole, která se budou zobrazovat. Je vidět C originál a způsob převodu do asm. Tato volba funguje pouze pokud je daný program prováděn (=spuštěn a zastaven pomocí break).
Okna (variables, watch, debug ...) ( které se zobrazují podle mínění překladače), lze zapnout v Debug/Windows.
Buttony v horní liště lze definovat tak, že po stisknutí pravého tlačítka myši (které stiskneme na “podkladu” horního menu – tj.na horní liště v místě kde nejsou buttony) se objeví menu, ve kterém můžeme vypínat a zapínat zobrazované buttony.
Poslední úpravy 2009-09-21