| Автор |
Съобщение |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Интересно поведение на GCC
Това се компилира но разбира се не работи според очакванията. След return съм забравил ; sb16_sec се изпълнява ако условието е изпълнено 
|
| Пет Ное 01, 2019 11:17 pm |
|
 |
|
iss
Ранг: Ориентиран
Регистриран на: Съб Фев 06, 2016 8:29 pm Мнения: 237
|
 Re: Интересно поведение на GCC
GCC-то би трябвало да се държи точно по правилния начин, защото това което компилира е всъщност: нали ?  По принцип би трябвало да се оплаче поне с warning, че void ф-ция се напъва да връща нещо....
|
| Пет Ное 01, 2019 11:28 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
 Re: Интересно поведение на GCC
ako sb16_sec e void, е напълно коретно!
|
| Съб Ное 02, 2019 12:46 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: Интересно поведение на GCC
Коректно е уж ама и аз си мисля че едно предупреждения че void функцията иска да връща нещо нямаше да е излишно  Постнах го щото е интересно. Не се бях сблъсквал.
|
| Съб Ное 02, 2019 9:11 am |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
 Re: Интересно поведение на GCC
това с какъв уорнинг левъл минава? ако функцията t() e void всичко е наред и няма причина компилатора да мръцне. генерира се просто връщане (ала RTS). демек return (void) f() не се различава по нищо от чист return
|
| Съб Ное 02, 2019 9:17 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: Интересно поведение на GCC
Различава се с това че вика функцията 
|
| Съб Ное 02, 2019 3:56 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
 Re: Интересно поведение на GCC
е, да. така е. затова е добра практика винаги да си ограждаш иф-овете (примерно) с {}, независимо, че е само един ред след иф-а. така компилатора ще ти ревне, ако си забравил ';' отродоксалните правоверни в kernel.org обаче не го харесват това и са го деприкейтнали. та в тоя контекст, компилатора не се държи странно. прави точно това, което си написал 
|
| Съб Ное 02, 2019 4:44 pm |
|
 |
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 8:04 pm Мнения: 2663 Местоположение: София / Велико Търново
|
 Re: Интересно поведение на GCC
Карам едни курсове за програмиране и там също препоръчаха винаги да има {} . Обаче на мен лично ми е много по-удобно ако има един стейтмънт, да го пиша без тях. Малко по-прегледно като, че ли. А и ако има последователно много вложени if-ове става луда работа да се слагат {} на всеки следващ if.  не, че няма по-културен начин за тая проверка...
|
| Съб Ное 02, 2019 9:51 pm |
|
 |
|
Jack
Ранг: Напреднал
Регистриран на: Вто Май 07, 2019 9:16 pm Мнения: 434 Местоположение: I bin thinkin’ this bin Gurindji country. We bin here longa time before them Vestey mob.
|
 Re: Интересно поведение на GCC
На времето (първата и единствена книжка по дискретна математика която съм чел - по Шанън, Флег и компания от 80-те) беше към 100-150 странички(много добро четиво разбираемо дори за математически инвалид като мен). И така- тука преди две седмици реших да хвърля едно око на нещо по-съвременно, та белким да си разчупя и аз малко 'парадигмите'. 'Книжлето' на което попаднах е къде 600-700 страници и за две седмици, с буксуване и припълзяване, стигнах докъм 100-тната - в стил е: " Представете си един хотел с безкраен брой стаи... Теоретично не може да бъде запълнен, но на момента ви пристигат точно безкраен брой гости и го запълвате... След малко ви идва още един гост който няма къде да настаните и за това премествате всички гости с една стая на-горе, при което се освобождава стая 'номер 1' и го настанявате там... така всички гости са настанени и доволни...  ...ко речи? Не знам на каква дрога са били авторите, като са писали 'парадигмите'  Или по-скоро аз съм кривия, щото кат гледам младеШта си ги разбира нещата, програмисТва си, професорсТва си по разни уни-та, даже престижни такива. Явно на мен не ми стига редбула в кръвта и твърде мноо съм излизал на вънка - ходил съм пеш, виждал съм разни предмети като дървета,хора, хотели - можИм да мислим до дадена степен в абстракция че хотела може и да е безкраен, но как така хем ще е краен, хем безкраен в един и същи момент -когато както ни оттърва. С две думи - всеки да си преценя сам до колко си е увредил мозъка от допир с реални предмети и хора  , или пък 'парадигмите' на съвременните деца са и за него  и той/тя владее 'Jedi Mind Tricks' за пред FAA. ПС-по темата - то и около аритметичните оператори са желателни скоби, ма по съвременните стандарти не е 'cool' . Виж ей тва е 'яко куул':
|
| Пет Ное 08, 2019 10:03 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Интересно поведение на GCC
Абе те ги учат уравнения с логика да решават .... сега гледам щерката в унито, верно че английския ми не е майчин, ама като гледам и на такива в които им е в кръвта до 10-то коляно пак не могат да разберат какво точно се пита в задачата камо ли как се решава, горе долу имаш две ябълки и три домата,колко тежи една планета ... някак си децата разбират, или налучкват какво се пита, и също така налучкват отговора, а може и дирекнто отговора да налучкват 
|
| Пет Ное 08, 2019 10:12 pm |
|
 |
|
bobihot
Ранг: Форумен бог
Регистриран на: Сря Фев 13, 2013 3:35 pm Мнения: 1803
|
 Re: Интересно поведение на GCC
Aз харесвам леко слятото писане като твоето. Не if(command[3] == 'T') { AlaBala(); } else { DyraByra(); StoChadyra(); }
|
| Пет Ное 08, 2019 11:14 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Интересно поведение на GCC
Ами слято е прегледно, стига да не му се обърка табулацията, иначе може да стане малък ужас, особенно някои по-сбити и съкратени записи, аз затова слагам {}, то не че пиша кой зане и какъв код ама ...
|
| Съб Ное 09, 2019 3:48 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Интересно поведение на GCC
_________________ main[-1u]={1};
|
| Съб Ное 09, 2019 3:54 pm |
|
 |
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 8:04 pm Мнения: 2663 Местоположение: София / Велико Търново
|
 Re: Интересно поведение на GCC
Честно казано ако си я има табулацията, кода си се чете и без скобите. Това кое къде е вложено може само по табулацията да се разбере, скобите ги слагам само поради изискване на стандарта. Някой виждал ли е компилатор който работи без скоби ? sizeof не връщаше ли размера в байтове на променливата. В случая подаваш (const char *)("TEST") ? Те. указател към null terminated string ? Размера на указателя зависи от операционната система или какъв процесор ползваш. Не беше ли нещо strlen  това което трябва
|
| Съб Ное 09, 2019 9:50 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Интересно поведение на GCC
sizeof е препроцес само - би трябва да върне 5 с нулата... или 4  ... нящо такова
_________________ main[-1u]={1};
|
| Съб Ное 09, 2019 10:35 pm |
|
|