Re: Proč to není chyba?
Michal Gregor
a2x1nptda8 na email.cz
Neděle Duben 28 07:38:56 CEST 2024
Je dobre si poridit lepsi edito ktery umi tyhle chyby detekovat.
Pripadne maji hlubsi analyzu kodu. (Napriklad Visual Studio)
Podobny problem:
uint32_t vypocet.
uint8_t vysledek;
vypocet = x + y * z;
vysledek = vypocet -1;
return vysledek;
Tuto chybu hlasi taky jen nektere kompilatory. Kod je funcni ale obcas
dela zajimave "vedlejsi efekty" na ktere se obvykle prijde az kdyz je pozde.
C a C++ je ze sve podstaty generatorem chyb :-)
Michal Gregor
Dne 27.04.2024 v 15:35 Jindroush napsal(a):
> On 27.04.2024 14:39, Martin Záruba wrote:
>> Chtěl jsem napsat (zjednofušeno, pro přehled, obě řádky byly velmi
>> dlouhé)
>>
>> a = 5
>> + 10;
>>
>> Výsledek by pochopitelně byl 15, jenže já omylem za 5 udělal středník,
>> takže vzniklo
>>
>> a = 5;
>> + 10;
>>
>> A kompilátor nehlásí žádnou chybu a výsledek je 5, druhý řádek se
>> ztratil. Proč ale neřve, že to je syntaktická chyba, vždyť nemá s tou
>> 10 co udělat?
>>
> Chyba neni to, ze kompilator zkompiluje validni vyraz. Chyba je si
> nezapnout vsechna varovani, tj. vetsinou -Wall, nebo podobny prepinac ;)
>
> Nektere kompilatory podporuji i 'kazdy warning je chyba', ze kompilaci
> nepusti dal, nez odstranite vsechna varovani. To uz ale zalezi na vkusu
> kazdeho, zda radsi riskuje skryte chyby, ktere se nemusi nikdy projevit,
> nebo ne.
>
--
Tento e-mail byl antivirovým softwarem AVG zkontrolován na viry.
www.avg.com
Další informace o konferenci Hw-list