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