Čtení chyb
Chyby k programování patří. Dělají je i zkušení programátoři, a to každý den. Důležité je umět je rychle najít a opravit, a s tím vám pomůžou chybové hlášky.
Překladač si před spuštěním projde celý program. Když v něm najde chybu, program vůbec nespustí, ani řádky před chybou, a ve výstupu ukáže červenou chybovou hlášku. Například v tomto programu chybí na řádku 4 středník:
#include <iostream>
int main() {
std::cout << "Ahoj!" << std::endl
std::cout << "Jak se máš?" << std::endl;
}Překladač Clang, který tady programy překládá, vypíše:
main.cpp:4:38: error: expected ';' after expression
4 | std::cout << "Ahoj!" << std::endl
| ^
| ;
1 error generated.Nejdůležitější je první řádek hlášky. Čtěte ho zleva:
main.cppje název souboru s programem, tedy toho v editoru.4je číslo řádku s chybou. Čísla řádků vidíte v editoru vlevo.38je číslo sloupce: kolikátý znak na řádku to je.error:říká, že jde o chybu. Za ním je anglicky popis:expected ';' after expressionznamená „za výrazem jsem čekal;“.
Pod tím Clang ukáže řádek s chybou a místo označí znakem ^. Často pod něj dokonce napíše, co tam chybí, tady ;. Poslední řádek 1 error generated. jen říká, kolik chyb Clang našel.
Trochu jinak vypadá hláška, když chybí uvozovka na konci textu:
#include <iostream>
int main() {
std::cout << "Ahoj! << std::endl;
}main.cpp:4:18: warning: missing terminating '"' character [-Winvalid-pp-token]
4 | std::cout << "Ahoj! << std::endl;
| ^
main.cpp:4:18: error: expected expression
1 warning and 1 error generated.Řádek s warning: je varování: upozornění, že něco vypadá podezřele. Tady je dokonce užitečnější než samotná chyba. missing terminating '"' character znamená „chybí koncová uvozovka“ a znak ^ ukazuje na uvozovku, ke které chybí pár. Bez ní překladač nepozná, kde text končí, a za << proto nenajde nic, co by dávalo smysl: expected expression znamená „čekal jsem výraz“, tedy něco, co by šlo vypsat.
Jedna chyba někdy způsobí několik hlášek. Když třeba chybí řádek #include <iostream>, dostanete chybu use of undeclared identifier 'std' (použití neznámého názvu std) u každého std:: v programu. Proto vždy opravte nejdřív první chybu a program spusťte znovu. Další hlášky často zmizí, protože byly jen jejím následkem. A naopak, po opravě se může objevit nová chyba, kterou překladač předtím nenašel.
Další časté chyby a jejich hlášky:
- Chybí
std::předcout:use of undeclared identifier 'cout'; did you mean 'std::cout'?Clang rovnou radí, co jste nejspíš mysleli. - Velké písmeno místo malého:
no member named 'Cout' in namespace 'std'; did you mean 'cout'? - Chybí
}na konci programu:expected '}'
Řádky s note: jsou jen doplňující poznámky. Často ukazují do souborů standardní knihovny, takže si jich nemusíte všímat.
Jak psát:
Pokyny
Program v editoru má dvě chyby: chybí v něm jeden středník a jedna uvozovka. Spusťte ho a přečtěte si první chybovou hlášku: na kterém řádku a sloupci je chyba a co je špatně? Chybu opravte a program spusťte znovu. Opakujte to, dokud program nevypíše:
Turnaj v piškvorkách
Kdy: v sobotu v 10:00
Kde: ve třídě 2.BZačněte programovat zdarma
5/6