Знать, как писать, не означает уметь писать....
Наконец-то руки дошли ответить..
Пойду и повешаюсь, гг.
Если ты скажешь это без аргументов и никак не опровергнув мои аргументы - я скажу что ты неадекватен и C++ - это твоя религия.
Кстати, расскажи-ка мне - в чем будут проблемы?
Какая, нафиг, удобная работа, ты где? Ты вообще похоже пишешь на чистом си, какие там структуры есть? Там же ни строк, ни массивов, одни указатели. Это ж почти тот же ассемблер.
Кстати, чистый си в отличии от C++ некоторый ууузенький смысл имеет.
Но говорить про его удобство - это просто смешно.
Он неудобен - но иногда необходим.
Вот в том-то и дело - C++ ты не знаешь. Ты используешь Си. То что большинство сишных сырцов можно скомпилить c++ компилятором - ничего не значит. Это разные языки. И Си в отличии от C++ кое-какой смысл имеет. Иногда.
А STL - это как раз не 'всякая примочка'. Это фигня которая упрощает написание как раз в первую очередь алгоритмического кода. Ну, ценой небольших потерь в производительности, ессно.
Да пофигу как у них руки работают. Если для того чтобы работать с метаинформацией создателям QT пришлось писать свой парсер для C++ - это клиника. Это дерьмово. Это - базовая вещь которой добились путем огромных извращений. Ты считаешь что удаление гланд через жопу это нормально?
Да хоть на реализацию foreach в том qt или бусте посмотри. Это что, нормально? Это сколько нужно потратить усилий чтобы собрать нечто подобное - совершенно элементарное по сути своей.
А откуда ты знаешь что там есть максимум всего что может тебе пригодится?
Модерам тоже хочется поразвлечься
Добавлено через 47 минут
Масм - это ужас. Бессмысленное поделие, в общем. Там где реально нужен ассемблер - там все эти if/else/етс нафиг не нужны. Концептуально - МАСМ - это извращение.
А с чего ты взял что он вообще должен работать?
Никто не обещал что хоть какой-то итератор будет указателем или будет принимать указатель в конструкторе.
В стандарте это не описано, насколько я помню.
Тем более, непонятно - зачем тебе это нужно.
Тараканы там местами есть, да.
Впрочем, если хочется переносимости можно использовать stlport
Ну, для достаточно низкоуровневого кода есть, к примеру, D.
Мне он нравится не слишком, но по скорости почти тот же Си++, а внутри повменяемей.
Добавлено через 54 минуты
Короче, пиши просто
std::list<std::string>::iterator myPos;
Последний раз редактировалось aSj; 28.02.2009 в 15:12. Причина: Добавлено сообщение
При чем тут С++ именно ? Я говорил, вообще про мнение.
Я конечно не гуру в шарпе, 2 месяца назад тока выучил и проект сдал, но работа с сырыми/необработанными буферами, это ахтунг какой то, приведения типов через жопу, просто байтик чтобы прочитать нужно 3 строчки написать. Например вот такую функцию сколько гемора мне стоить будет написать ?
Если у шарпа по определению, структура - это класс, что он еще запихает в него, хз.. И как мне потом отправлять эти данные ? Он что угодно отправит, но не точно сформированный запрос, угу?Код:int PppTerminateRequest(SOCKET gd, SOCKET sd, u_int16_t call_id, u_int32_t seq, pvpn_targets target) { typedef struct _p { pptp_gre_header header; ppp_header ppp; } p; p packet; int result = 0; int pay_len = 0; int packet_len = 0; u_int8_t lcp_term_req[] = "\x05\x00\x00\x04"; uchar buffer[1024]; if(debug_level > 0) dbgprint("|%s| Sending terminating connection request...\n", target->szIP); memset(buffer, 0, sizeof(buffer)); memset(&packet, 0, sizeof(packet)); PptpSetLinkInfo(sd, call_id, target); pay_len = sizeof(lcp_term_req) - 1; packet.ppp.address = hton8(PPP_ADDRESS); packet.ppp.control = hton8(PPP_CONTROL); packet.ppp.proto = hton16(PPP_PROTO_LCP); pay_len += sizeof(ppp_header); PppMakeGreHeader(&packet.header, PPTP_GRE_FLAG_K | PPTP_GRE_FLAG_S, call_id, pay_len, seq+1, seq); memcpy(buffer, &packet, sizeof(packet)); memcpy(buffer + sizeof(packet), lcp_term_req, sizeof(lcp_term_req)-1); packet_len = sizeof(packet)+sizeof(lcp_term_req)-1; if(SendSome(gd, (BYTE *)buffer, packet_len) <= 0) { if(debug_level > 0) dbgprint("|%s| Error sending PPP_CHAP_CODE_TERM_REQ packet: %d\n", target->szIP, GetLastError()); } else result = 1; return result; }
Генитально! Си сравнить с ассемблером)) Ты где учился ? Наверное в нашем старом добром БрГУ? Что в твоем определение структуры то ? А то, с таким заявлением, я даже боюсь тебе что то отвечать))
Массивов нет) Дядя, массив - это не такой класс, куда запихнул значение, вынул, удалил, не думая о том, куда это все ложится, где хранится и сколько памяти занимает.. Вы может вообще не учились нигде ? Или вам не успели объяснить, как и что из себя представляет массив, структура ? Ощущение такое, что со мной разговаривает религиозный дельфист, который начал свое существование как программист с книжки, Текстовый редактор на Дельфи за 5 минут))
Массивы, которые сейчас представляются, давно уже не те массивы, что были, это уже и массивами называть сложно, скорее коллекции или списки, но не массивы.
Кто говорил, что он удобен? о_О
Да и опять же, для кого то удобство, это вон псевдомассивы и 100 строк кода за один клик мышью, а для кого то, низкий уровень, незамысловатость синтаксиса, переносимость, независимость.
Если я его не использую всегда и везде, это не означает, что я его не знаю. Ребяческие выводы какие то, сударь.
Согласен, да и не спорил я с тобой. Я сразу сказал, что всему свой инструмент, выбирать по возможностям надо, а если тебе это не пригодится в проекте, или ты можешь сделать лучше, то выбор может оказатся не верным, а по сути просто "понтовым".
Извини, тех, недальновидных людей, которые разрабатывая стандарт С99, не имели машину будущего и не догадались, что через 10 лет, их будут поносить, за то, что они не знали о xml, что компьютеры будут в 20 раз мощнее, что 8 гигабайт оперативной памяти - это обычная вещь.
Опять какое то ребячество. Ну если я говорю, я наверно знаю, что говорю. Глупость какая то, доказывать человеку, что я знаю, то что знаю. Ты в голове у меня чтоли порылся ? Мысли читать по тексту научился ?
Вот блин, думаю, а Билл знает, что он писал ОС на дерьмовом языке, и что он не использовал весь максимум, что ему может пригодится ?) А что, все более менее серьезные проекты написаны на С + С++ ( на вскидку: Фаерфокс, Квака ) это ниче? 90% всех исходников, что можно найти в инете и opensource программ, написаны на Си + С++, это наверно то же совпадение, и люди просто плохие программисты, что сделали такой ужасный выбор :( Ты всем этим людям будешь доказывать, что они неправы ?
Вообщем, времена меняются, программисты то же, раньше с ассемблера начинали, а сейчас ассемблер к Си приравнивают. Чего поделаешь, люди деградируют и становятся лентяями, но я никого не обвиняю, разработчики (заметь не программисты) то же нужны, в мире, где иногда нужно быстро и качественно залепить офиссную програмульку, когда наработано уже столько, что по кускам можно не долго и ОС состряпать) Но нахальство по этому поводу недопустимо, доказывать человеку, что черное это белое, лишь потому что, он другой школы и руки из другого места растут, гон.. Так что, иди многоуважаемый aSj на йух))
Знать, как писать, не означает уметь писать....
Стандартно. Ошибка только в Release.
1>.\111.cpp(16) : error C2440: 'initializing' : cannot convert from 'int' to 'std::list<_Ty>::_Iterator<_Secure_validation>'
1> with
1> [
1> _Ty=std::string,
1> _Secure_validation=true
1> ]
С подключённым STLport-5.2.1
1>.\111.cpp(16) : error C2440: 'initializing' : cannot convert from 'int' to 'stlp_std::priv::_List_iterator<_Tp,_Traits>'
1> with
1> [
1> _Tp=stlp_std::string,
1> _Traits=stlp_std::_Nonconst_traits<stlp_std::strin g>
1> ]
1> Constructor for struct 'stlp_std::priv::_List_iterator<_Tp,_Traits>' is declared 'explicit'
1> with
1> [
1> _Tp=stlp_std::string,
1> _Traits=stlp_std::_Nonconst_traits<stlp_std::strin g>
1> ]
Но если подклюить STLport-4.6.2, то 1>111 - 0 error(s), 0 warning(s)
С этим STLпортом у меня тоже несовсем всй гладко. Дело в том, что его нужно скомпилить, но сделать это по предложенным там правилам не получается из-за отсутствия makfile для VS8, мало ли какие там могут быть options. Хоть в данном случае либа не потребуется, но опираться на STL в проекте без неё ...
... Проще взять все инклуды с либами из VS6 или писать всё "заново(громко сказано)".
К слову, этот контейнер мне понадобился для того, что там я собирался "складывать" упавшие фигуры, но подумавши решил, что хватит и массива, т.к. корзина имеет ограниченную небольшую размерность. Но щас это уже дело принципа, надо разобраться с этими всеми векторами, списками и т.п..
А если мне надо такое: if (myPos!=NULL) ?И почему Debug пропускает эту ошибку, а Release нет?
А если написать на С++(или там дельфи) и скомпилить в либу, и прилинковать потом её к шарпу? Интересно, # такое позволяет?
Последний раз редактировалось Alander; 01.03.2009 в 07:57.
Знать, как писать, не означает уметь писать....
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)