LINUX.ORG.RU

История изменений

Исправление 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.