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