LINUX.ORG.RU
Ответ на: В крестах нету того же void * от anonymous

Ты мне сначала под крестами скопиляй это: int * p = malloc(4); А потом уже кукарекай.

Потом ты мне покажешь void * в крестах. И да с семантикой сишного воида.

И да, посуществу есть что?

anonymous
()
Ответ на: комментарий от anonymous

но зачем? кукарекаешь здесь только ты.

void * так и быть, покажу:

$ cat void.cpp
void *foo(void *p) {
    return p = 0;
}

$ g++ -Wall -pedantic -c void.cpp

$ nm void.o
0000000000000000 T _Z3fooPv
                 U __gxx_personality_v0

по существу: ты не умеешь в кресты, поэтому не кукарекай про них.

anonymous
()
Ответ на: комментарий от anonymous

Собственно обсерился как и всегда, зачем ты это делаешь? Тратишь моё время на макание тебя в говно?:

$ cat idiot.cpp 
int * foo(void * p) {
  return p = 0;
}

$ g++ -c -Wall -pedantic idiot.cpp 
idiot.cpp: В функции «int* foo(void*)»:
idiot.cpp:2:14: ошибка: некорректное преобразование из «void*» в «int*» [-fpermissive]
   return p = 0;
              ^

Я даже тебе дауну там явно уточнил, что с сишной семантикой, зная насколько ты конченное.

Давай я тебе дебильчику объясню, в отличии от Си в крестах void * не обладает семантикой автокаста и вообще бесполезен и существует там только для совместимости. В сишке же воид обладает семантикой автокаста.

anonymous
()
Ответ на: комментарий от anonymous

оторвали имплицитные касты из void * и у тебя в попке запекло? :)

и правильно сделали. чтобы какая-то тупая обезьяна не отстрелила себе ногу.

anonymous
()
Ответ на: комментарий от anonymous

и правильно сделали. чтобы какая-то тупая обезьяна не отстрелила себе ногу.

Что, в общем-то, много говорит о целевой аудитории С++ :) Вот в C никогда касты из void * и прочие фичи с указателями не оторвут. Ибо предполагается что те, кто решился на C писать всё-же обладают мозгом.

Stanson ★★★★★
()
Ответ на: комментарий от anonymous

оторвали имплицитные касты из void * и у тебя в попке запекло? :)

Мне насрать на мнение нулёвой мрази. Ты мне высрал, что в крестах есть сишный void *, а в сишном воиде это есть. Именно для этого воид и существует, а если это выпилил - воид не нужен.

Т.е. ты просто обосрался? И от void * в крестах осталось только название?

и правильно сделали. чтобы какая-то тупая обезьяна не отстрелила себе ногу.

Как я уже говорил - мне насрать на мнение нулёвой шавки. Мне насрать на твои отговорки. Ты должен был высрать сишный void * не высрал, в чем проблема? Обделался? Зачем ты меня заставляешь ещё и рожей тебя в твоё говно макать?

anonymous
()
Ответ на: комментарий от Stanson

Ибо предполагается что те, кто решился на C писать всё-же обладают мозгом.

очень смелое утверждение. достаточно посмотреть на эдика.

anonymous
()
Ответ на: комментарий от anonymous

Царь тут! Всем цак одеть и ку делать!

anonymous
()
Ответ на: комментарий от anonymous

Ты мне высрал, что в крестах есть сишный void *

у тебя прогрессирующее слабоумие. см заголовок комментария.

Ты должен был высрать сишный void *

я тебе ничего не должен.

anonymous
()
Ответ на: комментарий от anonymous

у тебя прогрессирующее слабоумие. см заголовок комментария.

Ещё раз, тебе ясно уточнили «с сишной семантикой», чтобы ты не съехал на тип указателя игноря семантику кастов.

Ты как нивчём не бывало ответил, даже высрав код - обосрался.

Давай ещё раз и попроще: Т.к. ты тупая и невнимательная мразь - ты тем самым упустил свой шанс съехать на тип указателя игноря семантику кастов. Если бы ты не ответил на моё сообщение, либо начал кукарекать «да какая семантика - ты про неё не говорил» - ты бы мог съехать. Но полторы извилины не дают думать даже на ход вперёд, поэтому жри говно.

Я не понимаю, ты на что рассчитываешь? У меня же есть все цитаты, мразь. Ты какбэ не с собратом по"разуму" кукарекаешь на лавочке без диктофона, ты реально не понимаешь, что твой юлёж не работает?

я тебе ничего не должен.

Должна, ты должна, мразь, пруфцевать свой кукаретинг, либо я наделяю тебя объективным званием «балаболящая нулёвая мразь». Собственно ты его уже получил. И обжаловать ты его не можешь - ты можешь только продолжать делать вид, что ничего не было.

Тут нет приличного общества и вменяемых модераторов. Такая мразь пускается покругу, пулчая от каждого плювок в рожу, а после благополучно клеймуется и выпиливается поджопником. В интернетах просто клеймуется и выпиливается.

anonymous
()
Ответ на: комментарий от anonymous

цитата: «В крестах нету того же void *»

факт: это не так

вывод: царь — нулёвая балаболка не умеющая в кресты

anonymous
()
Ответ на: комментарий от anonymous

в крестах есть сишный void *, а в сишном воиде это есть. Именно для этого воид и существует, а если это выпилил - воид не нужен.

Ты понимаешь, что ты поехавший? Уже всё. Не я, блядь, поехавший… не он, блядь, а ты!

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ты понимаешь, что ты поехавший? Уже всё. Не я, блядь, поехавший… не он, блядь, а ты!

Эй, амёба. Ты же аргументацию выкатишь?

И чтож ты мразь криво цитируешь? В надежде на то, что кто-то не нажмёт на ссылку?

anonymous
()
Ответ на: комментарий от anonymous

факт: это не так

Амёба, тут штука в том, что ты уже обсерился вот тут: C++ всё (комментарий) - и там ниже по ветке.

Давай попроще. Ниже по коду я там тебе показал воид в крестах, но почему-то он не работает. Где же в крестах воид? В сишке-то всё работает.

anonymous
()
Ответ на: комментарий от Stanson

Вот в C никогда касты из void * и прочие фичи с указателями не оторвут. Ибо предполагается что те, кто решился на C писать всё-же обладают мозгом.

просто вызовут heartbleed и всё

next_time ★★★★★
()
Ответ на: комментарий от anonymous

я там тебе показал воид в крестах, но почему-то он не работает. Где же в крестах воид? В сишке-то всё работает.

Ничего не понимаю! И это программисты. Говно какое-то, пидоры, блядь. Computer science им дала типобезопасный полиморфизм — используй! Используй полиморфизм, блядь! «Не хочу, хочу говно на void*!» Что такое? Это программирование? Это программирование? Суки, мудачьё — разработчики. Редакторы открыли, говно пишут — пидоры, блядь, ёбаные.

hateyoufeel ★★★★★
()
Ответ на: комментарий от anonymous

Давай попроще.

давай. видел мой код? работает? работает. как и задумывалось.

если хочешь скастить — так и напиши в коде. в крестах так и мне насрать на сишные грабли.

anonymous
()
Ответ на: комментарий от anonymous

давай. видел мой код? работает? работает. как и задумывалось.

Давай. видел мой код? Не работает? не работает. так не задумывалось.

если хочешь скастить — так и напиши в коде

Если я хочу скастить - я так и пишу void *, который кастится сам - это его предсказуемое и стандартизированное поведение.

в крестах так и мне насрать на сишные грабли.

Т.е. ты обосрался? И типа если void * не работает, а вернее его просто нет - есть тип без семантики для совместимости, то это не твои проблемы? А нахрен ты кукарекал?

anonymous
()
Ответ на: комментарий от hateyoufeel

Т.е. по сути у тебя ничего нет?

Да и вообще, с чего какая-то нулёвая шавка будет меня учить писать? Мне не нужна твоя безопасность - она нужна тебе, убогому, а мне на неё насрать.

anonymous
()
Ответ на: комментарий от anonymous

так не задумывалось.

повторяю n+2 раз: это потому что ты не умеешь в кресты

предсказуемое и стандартизированное поведение.

повторяю n+3 раз: это потому что ты не умеешь в кресты

если void * не работает, а вернее его просто нет

повторяю n+4 раз: это потому что ты не умеешь в кресты

если ты не знаешь как в крестах используют void * — это не значит что он не нужен и тем более что его там нет

anonymous
()
Ответ на: комментарий от next_time

просто вызовут heartbleed и всё

Да ты я смотрю эксперт? Какой жопой heartbleed связан с void *?

Кресты - нету void * - пожалуйста.

int main(void) {
  vector<int> a, b;
  a.resize(100), a.reserve(100);
  b.resize(100), b.reserve(100);
  for(auto & it : a) it = 0xdeaddead;
  for(auto & it : b) it = 0xbeefbeef;
  fprintf(stderr, "%x\n", a[110]);
}
$ ./a.out 
beefbeef

Тем более переполнение буфера невозможно в текущих реалиях. К коду рандомных обезьян это конечно же не относится.

anonymous
()
Ответ на: комментарий от Stanson

Вот в C никогда касты из void * и прочие фичи с указателями не оторвут. Ибо предполагается что те, кто решился на C писать всё-же обладают мозгом.

Не оторвут, да. Но совсем по другой причине: обратная совместимость. Нафиг кому-то будет нужен «новый С», если код собираться перестанет?

DarkEld3r ★★★★★
()
Ответ на: комментарий от Pavval

крестовик шопесдетс

Ну какбэ в крестах это есть. Ну и я не собираюсь юзать это убогое говнище для больных наголовку калек, где вместо форматирования ублюдство.

anonymous
()
Ответ на: комментарий от anonymous

согласен, процитировал немного не правильно:

и прочие фичи с указателями не оторвут. Ибо предполагается что те, кто решился на C писать всё-же обладают мозгом.

вот так вернее. «прочие фичи с указателями» в том числе переполнение буфера тоже включают в себя, как следствие. как мы видим, от переполнения буфера и хеартблидов мозг типичных сишников не спасает.

К коду рандомных обезьян это конечно же не относится.

если к «рандомным обезьянам» вы относите всех, кроме вас самих, толку-то.

next_time ★★★★★
()
Ответ на: комментарий от anonymous

И? К чему ты это высрал? Что показывает твой вставленный a.reserve(101)? Почему конкретно я должен обосраться?

anonymous
()
Ответ на: комментарий от anonymous

Ну какбэ в крестах это есть.

Аргумент детского сада.

Ну и я не собираюсь юзать это убогое говнище для больных наголовку калек, где вместо форматирования ублюдство.

Так и скажи - ты тупо не осилил С++.

Pavval ★★★★★
()
Ответ на: комментарий от next_time

если к «рандомным обезьянам» вы относите всех, кроме вас самих, толку-то.

Я отношу к ним тех, кто остался на уровне 70-х годов.

Я не согласен с тем, что я должен жертвовать халявной безопасностью и производительностью ради легаси говна, которое юзают маргиналы. Юзаешь говно? Юзай openssl начала нулевых.

А так да, можно продолжать писать дырявую говнолапшу на протухшем говне под протухшее говно, но в чем смысл?

anonymous
()
Ответ на: комментарий от Pavval

Аргумент детского сада.

Чего аргумент?

Так и скажи - ты тупо не осилил С++.

Там есть что осиливать? Тебе не надоело мне что-то вякать, а потом обсираться?

Ты же мне расскажешь как ты дедуктивно вывел одно из другого?

anonymous
()
Ответ на: комментарий от anonymous

Мне не нужна твоя безопасность - она нужна тебе, убогому, а мне на неё насрать.

Меня твои высеры просто доебали уже, я уже не могу их слушать, блядь! Один высер охуительней другого просто! Про говно, блядь, про какую-то нулёвку, void*... Чё ты несешь-то вообще? Ты можешь заткнуться? «Пишу, блять, void* — скастится сам». Чего, блядь? Про что несешь? Вообще охуеть.

hateyoufeel ★★★★★
()
Ответ на: комментарий от anonymous

Конкретней. На каком основании ты сделал данный вывод. Почему ты проигнорировал мои вопросы?

Что показывает твой «пример»?

anonymous
()
Ответ на: комментарий от anonymous

алсо:


#include <iostream>
#include <vector>

using namespace std;

int main(void) {
  vector<int> a, b;
  a.resize(100), a.reserve(100);
  b.resize(100), b.reserve(100);
  for(auto & it : a) it = 1;
  for(auto & it : b) it = 2;
  cout<< a.at(110);
}


terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check
Aborted

next_time ★★★★★
()
Ответ на: комментарий от next_time

a.at
at

не стильно, не можно, не молодёжно.

anonymous
()
Ответ на: комментарий от anonymous

Там есть что осиливать?

Ты привел типа «код С++», в котором заюзал libc функции вывода вместо libstdc++. Вывод - ты нихрена не умеешь С++. Я уже молчу про operator[] вместо at().

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

Ты привел типа «код С++», в котором заюзал libc функции вывода вместо libstdc++. Вывод - ты нихрена не умеешь С++

Логика дегенерата.

// другой анонимус

anonymous
()
Ответ на: комментарий от Pavval

Ты привел типа «код С++», в котором заюзал libc функции вывода вместо libstdc++.

И? Зачем мне юзать говно, если я могу юзать не говно? Мне ничего это не запрещает.

Вывод - ты нихрена не умеешь С++

На чем основан этот вывод?

Я уже молчу про operator[] вместо at().

И, причём тут at()? Где проверка выхода за массивы для дефолтных скобочек? Нету - дырявое говно - потенциальный heartbleed.

anonymous
()
Ответ на: комментарий от anonymous

И? Зачем мне юзать говно, если я могу юзать не говно?

Если ты свой пример ущербности С++ привел на смеси С и С++, то его ценность нулевая.

На чем основан этот вывод?

Продолжай дальше делать вид, что ни понял.

Где проверка выхода за массивы для дефолтных скобочек?

Ты их сам назвал дефолтными?

Pavval ★★★★★
()
Последнее исправление: Pavval (всего исправлений: 1)
Ответ на: комментарий от anonymous

то что ub — это ub. его не стоит писать вообще, и тем более нет никакого смысла демонстрировать как оно себя ведёт на твоём локалхосте. у меня твой высер вылетел с сегфолтом.

anonymous
()
Ответ на: комментарий от anonymous

то что ub — это ub

И? Всё ошибки/дыры основаны на уб. Кто кукарекал про опенссл?

и тем более нет никакого смысла демонстрировать как оно себя ведёт на твоём локалхосте

Что ведёт? Ты совсем дебил - оно ведёт себя всегда и везде так же. Это переполнение буфера в хипе - иди погугли.

Я понимаю, что ты серанул, но всё же. Ты высрал reserve() зачем ты его высрал? Нулёвый балабол?, дак не кукарекай.

у меня твой высер вылетел с сегфолтом.

Зачем ты мне врёшь, балаболка?

anonymous
()
Ответ на: комментарий от anonymous

Всё ошибки/дыры основаны на уб.

ты не умеешь в причины возникновения дыр

Кто кукарекал про опенссл?

не знаю, лень искать.

оно ведёт себя всегда и везде так же

ложь. ты не знаешь что такое ub

Это переполнение буфера в хипе

это бессмысленный набор слов, не имеющий отношения к твоему высеру.

уточняем наши выводы: царь не только не умеет в кресты, но ещё и нулёвая балаболка даже в сях

anonymous
()
Ответ на: комментарий от anonymous

Потом ты мне покажешь void * в крестах. И да с семантикой сишного воида.

да без проблем, именно с сишной семантикой

тебе уже писали, что void* в с++ специально сделан более безопасным, но если тебе тебе действительно *нужен* твой помоечный void*, то он лепится на коленке без проблем:

#include <iostream>
#include <stdio.h>

class VoidPtr
{
  public:
    template<class T> VoidPtr(T* ptr): ptr( (void*)ptr ) {}
    template<class T> operator T* () { return (T*)ptr; }
  private:
    void* ptr;
};

int* f( VoidPtr p ) {
  return p;
}

char**************** g( VoidPtr p ) {  /// не жалко мне звездочек, чесслово!
  return p;
}

int main()
{
  char*    p   = 0;
  char**   pp  = &p;
  char***  ppp = &pp;

  printf("%p %p %p %p %p %p\n", f(p), f(pp), f(ppp), f(main), f(f), g(main) );

  std::cout << f(p)<<' '<<f(pp)<<' '<<f(ppp)<<' '<<f(main)<<' '<<f(f)<<' '<<g(main)<<"\n";

  return 0;
}

на самом деле, конечно, этот код только PoC, и для продакшена не годится; но реально нужен будет не сишный void*, а что-то другое, так что там все равно допиливать надо будет

www_linux_org_ru ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.