История изменений
Исправление slovazap, (текущая версия) :
В них не надо верить, они есть. Найди-ка компилятор плюсов под Zilog Z80
Сразу после того как найду этот антиквариат и придумаю зафига он мне нужен.
Не всегда
Ну если криворук пишет, то конечно нет. А у нормальных людей с C++ будет как минимум не хуже чем с C.
В плюсовом коде ошибок как раз хватает, притом там есть те же ошибки, что и в Си (выходы за пределы массива, разыменование нулевого указателя и далее по списку) но еще добавляется новых граблей со всякими шаблонами, классами итп
Вы неосилятор плюсов? Просто вы рассуждаете на уровне детского сада - «там шаблоны, там классы». В C++ как минимум любой массив и указатель можно обернуть в класс, проверяющий границы и инициализированность, и использовать его прозрачно, типобезопасно и без оверхеда помимо самой проверки, можно использовать обёртки с проверкой диапазона в compile time без оверхеда вообще, можно (и нужно) писать без работы с указателями вовсе. В то же время на C даже общую реализацию min() не написать без макросов с сайд-эффектами.
А так и неосилятору должно быть понятно что понятный и безопасный код выглядит как-то так
I2C(pindata, pinclock).Send(header).Send(data)
а ни в коем случае не так:
struct i2c_t i2c;
if (i2c_create(&i2c, pindata, pinclock) == -1) {
goto error;
}
if (i2c_send(&i2c, header, hsize) == -1) {
goto error;
}
if (i2c_send(&i2c, data, hsize) == 1) {
i2c_destroy(&i2c);
goto error;
}
i2c_destroy(&i2c);
error:
Рекомендую поискать тут ошибки и прикусить язык про 4.2.
Исправление slovazap, :
В них не надо верить, они есть. Найди-ка компилятор плюсов под Zilog Z80
Сразу после того как найду этот антиквариат и придумаю зафига он мне нужен.
Не всегда
Ну если криворук пишет, то конечно нет. А у нормальных людей с C++ будет как минимум не хуже чем с C.
В плюсовом коде ошибок как раз хватает, притом там есть те же ошибки, что и в Си (выходы за пределы массива, разыменование нулевого указателя и далее по списку) но еще добавляется новых граблей со всякими шаблонами, классами итп
Вы неосилятор плюсов? Просто вы рассуждаете на уровне детского сада - «там шаблоны, там классы». В C++ как минимум любой массив и указатель можно обернуть в класс, проверяющий границы и инициализированность, и использовать его прозрачно, типобезопасно и без оверхеда помимо самой проверки, можно использовать обёртки с проверкой диапазона в compile time без оверхеда вообще, можно (и нужно) писать без работы с указателями вовсе. В то же время на C даже общую реализацию min() не написать без макросов с сайд-эффектами.
А так и неосилятору должно быть понятно что понятный и безопасный код выглядит как-то так
I2C(pindata, pinclock).Send(header).Send(data)
а никак не так:
struct i2c_t i2c;
if (i2c_create(&i2c, pindata, pinclock) == -1) {
goto error;
}
if (i2c_send(&i2c, header, hsize) == -1) {
goto error;
}
if (i2c_send(&i2c, data, hsize) == 1) {
i2c_destroy(&i2c);
goto error;
}
i2c_destroy(&i2c);
error:
Рекомендую поискать тут ошибки и прикусить язык про 4.2.
Исправление slovazap, :
В них не надо верить, они есть. Найди-ка компилятор плюсов под Zilog Z80
Сразу после того как найду этот антиквариат и придумаю зафига он мне нужен.
Не всегда
Ну если криворук пишет, то конечно нет. А у нормальных людей с C++ будет как минимум не хуже чем с C.
В плюсовом коде ошибок как раз хватает, притом там есть те же ошибки, что и в Си (выходы за пределы массива, разыменование нулевого указателя и далее по списку) но еще добавляется новых граблей со всякими шаблонами, классами итп
Вы неосилятор плюсов? Просто вы рассуждаете на уровне детского сада - «там шаблоны, там классы». В C++ как минимум любой массив и указатель можно обернуть в класс, проверяющий границы и инициализированность, и использовать его прозрачно, типобезопасно и без оверхеда помимо самой проверки, можно использовать обёртки с проверкой диапазона в compile time без оверхеда вообще, можно (и нужно) писать без работы с указателями вовсе. В то же время на C даже общую реализацию min() не написать без макросов с сайд-эффектами.
А так и неосилятору должно быть понятно что понятный и безопасный код выглядит как-то так
I2C(pindata, pinclock).Send(header).Send(data)
а никак не так:
struct i2c_t i2c;
if (i2c_create(&i2c, pindata, pinclock) == -1) {
goto error;
}
if (i2c_send(&i2c, header, header_size) == -1) {
goto error;
}
if (i2c_send(&i2c, data, header_size) == 1) {
i2c_destroy(&i2c);
goto error;
}
i2c_destroy(&i2c);
error:
Рекомендую поискать тут ошибки и прикусить язык про 4.2.
Исправление slovazap, :
В них не надо верить, они есть. Найди-ка компилятор плюсов под Zilog Z80
Сразу после того как найду этот антиквариат и придумаю зафига он мне нужен.
Не всегда
Ну если криворук пишет, то конечно нет. А у нормальных людей с C++ будет как минимум не хуже чем с C.
В плюсовом коде ошибок как раз хватает, притом там есть те же ошибки, что и в Си (выходы за пределы массива, разыменование нулевого указателя и далее по списку) но еще добавляется новых граблей со всякими шаблонами, классами итп
Вы неосилятор плюсов? Просто вы рассуждаете на уровне детского сада - «там шаблоны, там классы». В C++ как минимум любой массив и указатель можно обернуть в класс, проверяющий границы и инициализированность, и использовать его прозрачно, типобезопасно и без оверхеда помимо самой проверки, можно использовать обёртки с проверкой диапазона в compile time без оверхеда вообще, можно (и нужно) писать без работы с указателями вовсе. В то же время на C даже общую реализацию min() не написать без макросов с сайд-эффектами.
А так и неосилятору должно быть понятно что понятный и безопасный код выглядит как-то так
I2C(pindata, pinclock).Send(header).Send(data)
а никак не так:
struct i2c_t i2c;
if (i2c_create(&i2c, pindata, pinclock) == -1) {
goto error;
}
if (i2c_send(&i2c, header) == -1) {
goto error;
}
if (i2c_send(&i2c, data) == 1) {
i2c_destroy(&i2c);
goto error;
}
i2c_destroy(&i2c);
error:
Рекомендую поискать тут ошибки и прикусить язык про 4.2.
Исходная версия slovazap, :
В них не надо верить, они есть. Найди-ка компилятор плюсов под Zilog Z80
Сразу после того как найду этот антиквариат и придумаю зафига он мне нужен.
Не всегда
Ну если криворук пишет, то конечно нет. А у нормальных людей с C++ будет как минимум не хуже чем с C.
В плюсовом коде ошибок как раз хватает, притом там есть те же ошибки, что и в Си (выходы за пределы массива, разыменование нулевого указателя и далее по списку) но еще добавляется новых граблей со всякими шаблонами, классами итп
Вы неосилятор плюсов? Просто вы рассуждаете на уровне детского сада - «там шаблоны, там классы». В C++ как минимум любой массив и указатель можно обернуть в класс, проверяющий границы и инициализированность, и использовать его прозрачно, типобезопасно и без оверхеда помимо самой проверки, а можно писать без работы с указателями вообще. В то же время на C даже общую реализацию min() не написать без макросов с сайд-эффектами.
А так и неосилятору должно быть понятно что понятный и безопасный код выглядит как-то так
I2C(pindata, pinclock).Send(header).Send(data)
а никак не так:
struct i2c_t i2c;
if (i2c_create(&i2c, pindata, pinclock) == -1) {
goto error;
}
if (i2c_send(&i2c, header) == -1) {
goto error;
}
if (i2c_send(&i2c, data) == 1) {
i2c_destroy(&i2c);
goto error;
}
i2c_destroy(&i2c);
error:
Рекомендую поискать тут ошибки и прикусить язык про 4.2.