| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Интересно поведение на GCC http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=16845 |
Страница 1 от 3 |
| Автор: | Nikola Kirov [ Пет Ное 01, 2019 11:17 pm ] | |||||||||
| Заглавие: | Интересно поведение на GCC | |||||||||
Това се компилира но разбира се не работи според очакванията. След return съм забравил ; sb16_sec се изпълнява ако условието е изпълнено |
||||||||||
| Автор: | iss [ Пет Ное 01, 2019 11:28 pm ] | |||||||||
| Заглавие: | Re: Интересно поведение на GCC | |||||||||
GCC-то би трябвало да се държи точно по правилния начин, защото това което компилира е всъщност:
нали ? |
||||||||||
| Автор: | ps66 [ Съб Ное 02, 2019 12:46 am ] |
| Заглавие: | Re: Интересно поведение на GCC |
ako sb16_sec e void, е напълно коретно! |
|
| Автор: | Nikola Kirov [ Съб Ное 02, 2019 9:11 am ] |
| Заглавие: | Re: Интересно поведение на GCC |
Коректно е уж ама и аз си мисля че едно предупреждения че void функцията иска да връща нещо нямаше да е излишно Постнах го щото е интересно. Не се бях сблъсквал. |
|
| Автор: | ДедоБоре [ Съб Ное 02, 2019 9:17 am ] | ||||||||||||||||||
| Заглавие: | Re: Интересно поведение на GCC | ||||||||||||||||||
това с какъв уорнинг левъл минава?
ако функцията t() e void всичко е наред и няма причина компилатора да мръцне. генерира се просто връщане (ала RTS). демек return (void) f() не се различава по нищо от чист return
|
|||||||||||||||||||
| Автор: | Nikola Kirov [ Съб Ное 02, 2019 3:56 pm ] |
| Заглавие: | Re: Интересно поведение на GCC |
Различава се с това че вика функцията |
|
| Автор: | ДедоБоре [ Съб Ное 02, 2019 4:44 pm ] |
| Заглавие: | Re: Интересно поведение на GCC |
е, да. така е. затова е добра практика винаги да си ограждаш иф-овете (примерно) с {}, независимо, че е само един ред след иф-а. така компилатора ще ти ревне, ако си забравил ';' отродоксалните правоверни в kernel.org обаче не го харесват това и са го деприкейтнали. та в тоя контекст, компилатора не се държи странно. прави точно това, което си написал |
|
| Автор: | slav4o.com [ Съб Ное 02, 2019 9:51 pm ] | |||||||||
| Заглавие: | Re: Интересно поведение на GCC | |||||||||
Карам едни курсове за програмиране и там също препоръчаха винаги да има {} . Обаче на мен лично ми е много по-удобно ако има един стейтмънт, да го пиша без тях. Малко по-прегледно като, че ли. А и ако има последователно много вложени if-ове става луда работа да се слагат {} на всеки следващ if. ![]()
не, че няма по-културен начин за тая проверка... |
||||||||||
| Автор: | Jack [ Пет Ное 08, 2019 10:03 pm ] | |||||||||
| Заглавие: | Re: Интересно поведение на GCC | |||||||||
На времето (първата и единствена книжка по дискретна математика която съм чел - по Шанън, Флег и компания от 80-те) беше към 100-150 странички(много добро четиво разбираемо дори за математически инвалид като мен). И така- тука преди две седмици реших да хвърля едно око на нещо по-съвременно, та белким да си разчупя и аз малко 'парадигмите'. 'Книжлето' на което попаднах е къде 600-700 страници и за две седмици, с буксуване и припълзяване, стигнах докъм 100-тната - в стил е: " Представете си един хотел с безкраен брой стаи... Теоретично не може да бъде запълнен, но на момента ви пристигат точно безкраен брой гости и го запълвате... След малко ви идва още един гост който няма къде да настаните и за това премествате всички гости с една стая на-горе, при което се освобождава стая 'номер 1' и го настанявате там... така всички гости са настанени и доволни... ПС-по темата - то и около аритметичните оператори са желателни скоби, ма по съвременните стандарти не е 'cool' . Виж ей тва е 'яко куул':
|
||||||||||
| Автор: | ToHu [ Пет Ное 08, 2019 10:12 pm ] |
| Заглавие: | Re: Интересно поведение на GCC |
Абе те ги учат уравнения с логика да решават .... сега гледам щерката в унито, верно че английския ми не е майчин, ама като гледам и на такива в които им е в кръвта до 10-то коляно пак не могат да разберат какво точно се пита в задачата камо ли как се решава, горе долу имаш две ябълки и три домата,колко тежи една планета ... някак си децата разбират, или налучкват какво се пита, и също така налучкват отговора, а може и дирекнто отговора да налучкват |
|
| Автор: | bobihot [ Пет Ное 08, 2019 11:14 pm ] | ||||||||||||||||||
| Заглавие: | Re: Интересно поведение на GCC | ||||||||||||||||||
Aз харесвам леко слятото писане като твоето. Не if(command[3] == 'T') { AlaBala(); } else { DyraByra(); StoChadyra(); } |
|||||||||||||||||||
| Автор: | ToHu [ Съб Ное 09, 2019 3:48 am ] |
| Заглавие: | Re: Интересно поведение на GCC |
Ами слято е прегледно, стига да не му се обърка табулацията, иначе може да стане малък ужас, особенно някои по-сбити и съкратени записи, аз затова слагам {}, то не че пиша кой зане и какъв код ама ... |
|
| Автор: | TheWizard [ Съб Ное 09, 2019 3:54 pm ] |
| Заглавие: | Re: Интересно поведение на GCC |
memcmp( command, "TEST", sizeof("TEST")-1 ) http://www.cplusplus.com/reference/cstring/memcmp/ |
|
| Автор: | slav4o.com [ Съб Ное 09, 2019 9:50 pm ] | |||||||||
| Заглавие: | Re: Интересно поведение на GCC | |||||||||
Честно казано ако си я има табулацията, кода си се чете и без скобите. Това кое къде е вложено може само по табулацията да се разбере, скобите ги слагам само поради изискване на стандарта. Някой виждал ли е компилатор който работи без скоби ?
sizeof не връщаше ли размера в байтове на променливата. В случая подаваш (const char *)("TEST") ? Те. указател към null terminated string ? Размера на указателя зависи от операционната система или какъв процесор ползваш. Не беше ли нещо strlen |
||||||||||
| Автор: | TheWizard [ Съб Ное 09, 2019 10:35 pm ] |
| Заглавие: | Re: Интересно поведение на GCC |
sizeof е препроцес само - би трябва да върне 5 с нулата... или 4 |
|
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|