metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2007-01-17 11:55 am

Ну кому в голову пришел такой язык?

Оригинальный код:
((void (*)())0)();

Чтобы понять происходящее, я его сначала откомпилировал, затем дизассемблировал, получилось такое:
xor eax,eax
call eax

Затем я это дело разделил собственно на объявление указателя на функцию и на вызов:

typedef void (*fptr)();

void main(){
((fptr)0)();
}

Особо бесит указание имени объявляемого типа в середине объявления. Очень логично. Это как если бы присвоение var1=var2 в стиле va(=var1)r2;

[identity profile] 1ceheart.livejournal.com 2007-01-17 12:04 pm (UTC)(link)
Да ну. Конструкции вида той, которая сверху - целиком на совести их авторов, поленившихся - в данном конкретном случае - написать typedef. Тот же автор и на питоне смог бы написать код, который пришлось бы компилить и дизассемблить.