OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 16 Апрель, 2024 13:04

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Очередной "прикол" от Си...
СообщениеДобавлено: Пятница, 05 Октябрь, 2007 22:39 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
На сайте qnx.org.ru один из участников форума (по-моему, mike) описал как-то одну из ситуаций, когда начинают посещать сомнения в собственной вменяемости, при поиске ошибки в «очевидном» коде, в виде выражения:

«Ну, думал, - ВСЁ! - ДОПРОГРАММИРОВАЛСЯ!...»

Именно такой случай произошёл сегодня со мной. (И – что самое обидное – после обеда в пятницу! :о) )

Но, когда ошибка была найдена, в очередной раз появился повод поматюкаться в сторону Си и пожалеть об отсутствии оберонов под рукой для работы на AVR-ках...

Сравните два фрагмента кода:
Код:
...
//------------------------------------------------------------------------------
   case 2:
      if( KBD_key != KBD_prevKey )
         KBD_state = 0;
      else
         if( KBD_wait-- == 0 )
         {
            switch( KBD_key )
            case KBD_KEY_BRIGHTNESS:
               Display_NextBrightnessLevel();
            break;
            default:
               KBD_event = KBD_key;
            break;
            KBD_state = 99;
         }
   break;
//------------------------------------------------------------------------------
...

и
Код:
...
//------------------------------------------------------------------------------
   case 2:
      if( KBD_key != KBD_prevKey )
         KBD_state = 0;
      else
         if( KBD_wait-- == 0 )
         {
            switch( KBD_key )
           {
            case KBD_KEY_BRIGHTNESS:
               Display_NextBrightnessLevel();
            break;
            default:
               KBD_event = KBD_key;
            break;
            }
            KBD_state = 99;
         }
   break;
//------------------------------------------------------------------------------
...

Не правда ли, отличия – ну прям-таки сразу бросаются в глаза!... :о)

Этот код – часть «драйвера» клавиатуры в разрабатываемом мной устройстве (конечный автомат обработчика клавиатуры). Кусок switch( KBD_key ) был, первоначально, более объёмным. Но, после пересмотра требований и перепроектирования, я его упростил... Как выяснилось – себе на голову... :о) Текст я не набивал, а скопировал из ранней версии исходника. Скопировано было меньше case-частей. Вернее, я удалил в новом тексте, то, что оказалось ненужным... И, при этом, я случайно «грохнул» фигурные скобки в switch-конструкции.

И КОМПИЛЯТОР ЭТО СПОКОЙНЕНЬКО ПРОПУСТИЛ!
КАК – ТАК И НАДО!
БЕЗ ВСЯКИХ НАРЕКАНИЙ!

А я имел чудных несколько часов поисков «глюка»! (Прошу заметить, что отладка встроенных систем «несколько» разнится с отладкой в Дельфи или Визуал-студии... :о)))) )

Код на Си МОЖНО написать ОЧЕНЬ ёмким и кратким. Но, ребяты!, стоит это того времени, и тех нервов на отладке?! ОСОБЕННО в таких спартанских условиях, как в случае встроенных систем?

(Можно, конечно, было и простым if-ом вместо switch-а обойтись, но я знаю, что требования будут меняться – потому и специально вставил «расширяемую» конструкцию... Решил облегчить себе жизнь. :о) )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Пятница, 05 Октябрь, 2007 23:03 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Ну, не знаю как Вам, а мне эта опечатка сразу в глаза бросилась, ещё до того, как увидел второй код.
Кстати, такого у меня ещё не было... ;о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Суббота, 06 Октябрь, 2007 07:50 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Geniepro писал(а):
Ну, не знаю как Вам, а мне эта опечатка сразу в глаза бросилась, ещё до того, как увидел второй код.

Это потому, что для публикации код "отблагородил"...
Кроме того, все мы люди и всегда "лезем" проверять те места, которые "hарантированно работают" в самую последнюю очередь... Конечно код я этот "пробегал" глазами... Но дошёл до него уже после некотрого времени простановки контрольных точек в более высоких уровнях вызовов функций и обработки...
Geniepro писал(а):
Кстати, такого у меня ещё не было... ;о)

Дарю! :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 07 Октябрь, 2007 13:30 

Зарегистрирован: Пятница, 29 Июнь, 2007 12:16
Сообщения: 98
Меня вот например вот такие вещи
Код:
 if( KBD_wait-- == 0 )

убивают сразу...

Поэтому и не люблю я СИ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 07 Октябрь, 2007 14:45 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Darksnake писал(а):
Меня вот например вот такие вещи
Код:
 if( KBD_wait-- == 0 )

убивают сразу...
Поэтому и не люблю я СИ...


Сравните "на слух" фразы из разных языков:
раннин' мэн
бегущий человек
людына, що бигае

Какой язык вам больше "нравится"? :о) Почему?

Вопрос не в том, что "нравится". А в том, что язык, постулировав поддержку структурных операторов, на поверку позволяет плевать на всю эту структурность! Не знаю, как вам, а у меня, кроме досады, ещё и масса удивления была (на уровне "ну, уж ЭТО - ни в какие ворота!...")


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 07 Октябрь, 2007 17:57 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Недавно просматривал журнал "Хакер" за июль 2007-го. На странице 120 с интересом прочитал статью "Трюки от крыса", в которой описывались диграфы и триграфы языка Си. Для тех, кто не в курсе: триграфы - это трёхбуквенные, а диграфы - двухбуквенные эквиваленты некоторого символа. Например:
(XX-граф) = (символ)
??= = #
??( = [
??< = {
<: = [
<% = {
%: = #
Эти комбинации (и некоторые другие) описаны в стандарте языка Си и, естественно, по-разному обрабатываются разными промышленными компиляторами.
В статье указывалось, что при использовании диграфа <: совместно с шаблонами в Си++ возможна такая коллизия: std::vector<::X транслируется сначала в std::vector[:X, после чего компиляция завершается с ошибкой.
В конце статьи автор пишет: "В действительности это не баг. Это фича! И теперь ты знаешь, как с ней обращаться". Остаётся только пожелать Си-программистам побольше таких фич и новых, интересных открытий каждый день.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 07 Октябрь, 2007 18:59 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
"Интересная болезнь маразм. Ничего не болит - зато каждый день новости" (С) Не я


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 07 Октябрь, 2007 21:31 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Александр Ильин писал(а):
В конце статьи автор пишет: "В действительности это не баг. Это фича! И теперь ты знаешь, как с ней обращаться". Остаётся только пожелать Си-программистам побольше таких фич и новых, интересных открытий каждый день.
Да ну, эти Ваши диграфы - детский лепет... Вот то ли дело Хаскелл:
Код:
--------------------------------------------
module Main where{import List;import System;
import Data.HashTable as H;(???????)=(concat
);(??????)(???)(????)=((groupBy)(???)(????))
;(??????????????????????)(????)=((??????????
)((tail).(???????))((????????????????????)((
??????)(?????????????????????)(????))));(??)
=([' ']);(??????????????)=((hashString));(?)
=((>>=));(???????????????????????)([((???)),
(????)])=((?????????????)(???))?(\(?????)->(
(????????????????)(==)(??????????????))?(\((
???))->((??????????????????)(???????????????
)(???)(?????))>>((?????????????????)(???))?(
\((?????))->((((???????????????????)((????))
((??????????????????????))((?????))))))));((
???????????????????????))(??)=(????????????)
("usage f dic out");(?????????????????????)(
(???),(??????))((????),(????????????????????
))=((???)==(????));(?????????????????)(???)=
(toList)(???);(????????????????????)(????)=(
((??????????)(((??????????)(snd)))((????))))
;(??????????????????)(???????????????)(???)(
(?????))=(((mapM)(((???????????????)(???)))(
(lines)(?????))));(???????????????????)(????
)(???????????????????????)(?????)=(?????????
)(????)((unlines)((???????????????????????)(
?????)));(????????????????)(???)((????))=(((
new)(???)(????)));(main)=((???????????)?(((\
(???)->((???????????????????????)(???))))));
(???????????????)(???)(????)=((????????)(???
)((sort)(????))((??)++(????)));(???????????)
=(getArgs);(????????????)(???)=((((print))((
???))));(??????????)(???)(????)=(((map)(???)
(????)));(????????)((???))(????)(?????)=((((
H.insert))((???))(????)(?????)));(?????????)
((???))((????))=(((writeFile)(???)((????))))
;(?????????????)(???)=(((readFile)((???))))}
--------------------------------------------
Другое дело, что нормальные адекватные люди такое не делают...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 07 Октябрь, 2007 22:11 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
"Интересная болезнь маразм. Ничего не болит - зато каждый день новости" (С) Не я

Наверное, имелся в виду склероз... :о)))))))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 07 Октябрь, 2007 22:31 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Geniepro писал(а):
...Другое дело, что нормальные адекватные люди такое не делают...

«Оранжевые штаны - два раза «ку!»»(с)Уэф из КДД

Не пугайте меня...... :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Пятница, 12 Октябрь, 2007 09:50 

Зарегистрирован: Среда, 28 Февраль, 2007 00:08
Сообщения: 142
Откуда: Нижний Новгород
Geniepro писал(а):
Александр Ильин писал(а):
В конце статьи автор пишет: "В действительности это не баг. Это фича! И теперь ты знаешь, как с ней обращаться". Остаётся только пожелать Си-программистам побольше таких фич и новых, интересных открытий каждый день.
Да ну, эти Ваши диграфы - детский лепет... Вот то ли дело Хаскелл:
......
Другое дело, что нормальные адекватные люди такое не делают...

А что Хаскель? смотрим призеров http://www.ioccc.org (международный чемпионат по запутыванию Сишного кода)и в каких фирмах работают эти "нормальные адекватные люди". Как то раз попробовал поведение расшифровать -через сутки решил что хватит с меня таких извращений.
Код:
X=1024; Y=768; A=3;

J=0;K=-10;L=-7;M=1296;N=36;O=255;P=9;_=1<<15;E;S;C;D;F(b){E="1""111886:6:??AAF"
"FHHMMOO55557799@@>>>BBBGGIIKK"[b]-64;C="C@=::C@@==@=:C@=:C@=:C5""31/513/5131/"
"31/531/53"[b ]-64;S=b<22?9:0;D=2;}I(x,Y,X){Y?(X^=Y,X*X>x?(X^=Y):0,  I (x,Y/2,X
)):(E=X);      }H(x){I(x,    _,0);}p;q(        c,x,y,z,k,l,m,a,          b){F(c
);x-=E*M     ;y-=S*M           ;z-=C*M         ;b=x*       x/M+         y*y/M+z
*z/M-D*D    *M;a=-x              *k/M     -y*l/M-z        *m/M;    p=((b=a*a/M-
b)>=0?(I    (b*M,_      ,0),b    =E,      a+(a>b      ?-b:b)):     -1.0);}Z;W;o
(c,x,y,     z,k,l,    m,a){Z=!    c?      -1:Z;c     <44?(q(c,x         ,y,z,k,
l,m,0,0     ),(p>      0&&c!=     a&&        (p<W         ||Z<0)          )?(W=
p,Z=c):     0,o(c+         1,    x,y,z,        k,l,          m,a)):0     ;}Q;T;
U;u;v;w    ;n(e,f,g,            h,i,j,d,a,    b,V){o(0      ,e,f,g,h,i,j,a);d>0
&&Z>=0? (e+=h*W/M,f+=i*W/M,g+=j*W/M,F(Z),u=e-E*M,v=f-S*M,w=g-C*M,b=(-2*u-2*v+w)
/3,H(u*u+v*v+w*w),b/=D,b*=b,b*=200,b/=(M*M),V=Z,E!=0?(u=-u*M/E,v=-v*M/E,w=-w*M/
E):0,E=(h*u+i*v+j*w)/M,h-=u*E/(M/2),i-=v*E/(M/2),j-=w*E/(M/2),n(e,f,g,h,i,j,d-1
,Z,0,0),Q/=2,T/=2,       U/=2,V=V<22?7:  (V<30?1:(V<38?2:(V<44?4:(V==44?6:3))))
,Q+=V&1?b:0,T                +=V&2?b        :0,U+=V    &4?b:0)     :(d==P?(g+=2
,j=g>0?g/8:g/     20):0,j    >0?(U=     j    *j/M,Q      =255-    250*U/M,T=255
-150*U/M,U=255    -100    *U/M):(U    =j*j     /M,U<M           /5?(Q=255-210*U
/M,T=255-435*U           /M,U=255    -720*      U/M):(U       -=M/5,Q=213-110*U
/M,T=168-113*U    /       M,U=111               -85*U/M)      ),d!=P?(Q/=2,T/=2
,U/=2):0);Q=Q<    0?0:      Q>O?     O:          Q;T=T<0?    0:T>O?O:T;U=U<0?0:
U>O?O:U;}R;G;B    ;t(x,y     ,a,    b){n(M*J+M    *40*(A*x   +a)/X/A-M*20,M*K,M
*L-M*30*(A*y+b)/Y/A+M*15,0,M,0,P,  -1,0,0);R+=Q    ;G+=T;B   +=U;++a<A?t(x,y,a,
b):(++b<A?t(x,y,0,b):0);}r(x,y){R=G=B=0;t(x,y,0,0);x<X?(printf("%c%c%c",R/A/A,G
/A/A,B/A/A),r(x+1,y)):0;}s(y){r(0,--y?s(y),y:y);}main(){printf("P6\n%i %i\n255"
"\n",X,Y);s(Y);}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Пятница, 12 Октябрь, 2007 17:50 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
А вот уже исскуство:
Код:
#include                                     <math.h>
#include                                   <sys/time.h>
#include                                   <X11/Xlib.h>
#include                                  <X11/keysym.h>
                                          double L ,o ,P
                                         ,_=dt,T,Z,D=1,d,
                                         s[999],E,h= 8,I,
                                         J,K,w[999],M,m,O
                                        ,n[999],j=33e-3,i=
                                        1E3,r,t, u,v ,W,S=
                                        74.5,l=221,X=7.26,
                                        a,B,A=32.2,c, F,H;
                                        int N,q, C, y,p,U;
                                       Window z; char f[52]
                                    ; GC k; main(){ Display*e=
 XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0))
; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400,
0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6}
; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B=
sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E
*T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s
]== 0|K <fabs(W=T*r-I*E +D*P) |fabs(D=t *D+Z *T-a *E)> K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K
 *D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M;
  XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){
                                   XEvent z; XNextEvent(e ,&z);
                                       ++*((N=XLookupKeysym
                                         (&z.xkey,0))-IT?
                                         N-LT? UP-N?& E:&
                                         J:& u: &h); --*(
                                         DN -N? N-DT ?N==
                                         RT?&u: & W:&h:&J
                                          ); } m=15*F/l;
                                          c+=(I=M/ l,l*H
                                          +I*M+a*X)*_; H
                                          =A*r+v*X-F*l+(
                                          E=.1+X*4.9/l,t
                                          =T*m/32-I*T/24
                                           )/S; K=F*M+(
                                           h* 1e4/l-(T+
                                           E*5*T*E)/3e2
                                           )/S-X*d-B*A;
                                           a=2.63 /l*d;
                                           X+=( d*l-T/S
                                            *(.19*E +a
                                            *.64+J/1e3
                                            )-M* v +A*
                                            Z)*_; l +=
                                            K *_; W=d;
                                            sprintf(f,
                                            "%5d  %3d"
                                            "%7d",p =l
                                           /1.7,(C=9E3+
                              O*57.3)%0550,(int)i); d+=T*(.45-14/l*
                             X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47
                             *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W*
                             179*v)/2312; select(p=0,0,0,0,&G); v-=(
                              W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u
                               )/107e2)*_; D=cos(o); E=sin(o); } }
Рабочий авиасимулятор... :о))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Суббота, 13 Октябрь, 2007 14:16 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Что-то у меня это искусство gcc компилирует. И как Си пробовал и как Си++... Как бы выявить в чем ошибки? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Суббота, 13 Октябрь, 2007 18:48 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Евгений Темиргалеев писал(а):
Что-то у меня это искусство gcc компилирует. И как Си пробовал и как Си++... Как бы выявить в чем ошибки?
Попробовал скомпилировать виндовой версией GCC 3.4.5 из комплекта GHC 6.6 - нет юниксовых хедеров X11/Xlib.h и X11/keysym.h... Эта прога под Юникс, видимо... :о))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 14 Октябрь, 2007 18:58 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Вот у меня под ASP и не скомпилировалось... А это вроде юникс как-никак %)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 14 Октябрь, 2007 19:39 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
А как вам такой вариант искусства: http://99-bottles-of-beer.net/language-perl-737.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 14 Октябрь, 2007 20:41 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Евгений Темиргалеев писал(а):
Вот у меня под ASP и не скомпилировалось... А это вроде юникс как-никак %)

Линукс - не Юникс... :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Воскресенье, 14 Октябрь, 2007 22:13 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Darksnake писал(а):
Меня вот например вот такие вещи
Код:
 if( KBD_wait-- == 0 )

убивают сразу...
Поэтому и не люблю я СИ...


Всяка мядаль - с двумя сторонами...

Я тоже люблю порассуждать "чего не нравица" или "как правильна"...

Но вот не попрёшь против такого:
Код:
switch( a)
{
...
break;
case A1: case A2: case A3:
   if (cond)
case A4: case A5:
      DoThis();
   else
case A6: case A7: case A8:
      DoThat();
   DoCommonThings();
break;
...
}

"Дико"? - Да!
Не структурно? - 101%!
Зато это сэкономило мне (не в одном месте такой "изврат"!) кучу ячеек и я влез-таки в ОЗУ мкроконтроллера! А это значит - выполненный проект. Со всеми втекающими! :о)
Возражения, типа "ну и писали бы сразу на ассемблере" НЕ принимаются! На ассемблере ТАК быстро писать с таким выходом кода - не получается...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Понедельник, 15 Октябрь, 2007 11:06 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Владимир Лось писал(а):
"Дико"? - Да!
Не структурно? - 101%!
Зато это сэкономило мне (не в одном месте такой "изврат"!) кучу ячеек и я влез-таки в ОЗУ мкроконтроллера! А это значит - выполненный проект. Со всеми втекающими! :о)
Вы это самое, того...
Не забудьте задокументировать и подробнейше описать, pачем Вы так сделали, и что конкретно и где это Вам дало.
Через полгода Вы сами это месть понять не сможете, не говоря уже о других... :о))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной "прикол" от Си...
СообщениеДобавлено: Четверг, 18 Октябрь, 2007 13:59 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Ещё один прикол от Си. Я сегодня написал вместо:
Код:
void ReadQualyIdent (Parser &ps, std::string &ident1, std::string &ident2)
{
   ...
   ident2 = ps.scanner.ident;
   ...
}

вот это:
Код:
void ReadQualyIdent (Parser &ps, std::string &ident1, std::string &ident2)
{
   ...
   ident2 = ps.symbol;
   ...
}

Компилятор MS VS 2005 это дело прекрасно скомпилировал, не смотря на то, что переменная ps.symbol имеет тип enum, а не std::string.
В результате во время выполнения программы появился "мусор в памяти".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB