Василий Банников, это да, но в с++ есть совместимость с Си на уровне заголовочных файлов и ключевых слов.
Это уже серьезно.
Например, банальный hello world в си подобном js совершенно не такой.
А вот с++ компилятор спокойно соберёт этот код.
Василий Банников, идеоматичный может не быть, согласен.
Но языки все равно похожи.
Различия больше на уровне stdlib, а синтаксис базовых вещей вроде if, for и т.д одинаковый.
Василий Банников, Вообще си и с++ действительно очень похожи
Конечно есть всякие
sizeof('a')!=sizeof('a') в С++, но это в общем-то мелочи
ну и всякие классы, исключения и т.д
в целом большое количество хорошего кода на си абсолютно валидно для с++
Александр Ананьев, то, что на Windows произойдет структурное исключение, программа упадет
нужно ловить с помощью __except, а не catch
а мне надо с помощью catch
Спасибо.
Да, до меня сейчас дошло что можно просто сгенерировать еще одну функцию. До этого думал что решу каким-то отдельным кодом.
__builtin_apply выглядит интересно, почитаю.
Я пишу транслятор js в c++
Мне нужно реализовать метод apply из js
в JavaScript это выглядит так:
function f(a,b){
return a+b;
}
f(1,2);//3
f.apply([1,2]); //3
в моем представлении это так:
копируем вектор {1,2} по какому-то адресу чтобы общаться с 1 и 2 как с аргументами
Elvis
ох уж эти любители писать нифига нечитаемые однострочники
я молчу про производительность данного решения (она очевидно плохая за счет использования set).
jcmvbkbc,
Спасибо за код!
Посмотрел, выглядит действительно не очень понятно.
Теперь бы еще реализовать аналогичную штуку для float.
Вы где нашли коды опкодов?
UPD: оказывается при делении 1.0f на 0.0f получается inf, а не сигнал.
Не знал.
ассемблерная вставка правда немного смущает, никакой портируемости
ну да ладно