LINUX.ORG.RU

Новая версия книги «Modern C», адаптированная для C23

 , ,


1

8

Привет, ЛОР!

Я просто оставлю это здесь: https://inria.hal.science/hal-02383654

В книгу добавлены такие новые (для сишников) штуки как _BitInt(N), constexpr, арифметика с проверкой переполнения, auto, nullptr, typeof и прочие фишки нового стандарта.

Ответ на: комментарий от vbr

Что там в C++ я не знаю и знать не хочу. У этих клоунов даже для malloc каст вручную надо писать. Мертворожденный язык.

Зачем?

#include <stdlib.h>

template <typename T = char>
T* malloc(size_t n) {
    return static_cast<T*>(::malloc(sizeof(T) * n));
}

void test() {
    double *p = malloc<double>(5);
    char *buffer = malloc<>(1024);
}
Даже короче чем в С.

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Это ж УБ, т.е. это обеспечивает программист вместо компилятора и таким образом хоть и косвенно но какбе гарантирует

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

<double> набирать быстрее чем sizeof(double), так что проблем не вижу, С++ выигрывает у С.

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

На самом деле я лучший и самый ответственный среди всех. Я когда в эту компанию пришёл, первым делом закрыл фаерволом постгрес, который торчал голой дупой в интернет с паролем вида lor:lor. Поработав могу ответственно заявить - у других не лучше. Мне кажется, массовых взломов больниц и всего прочего нет только потому, что хакерам банально совестно таким заниматься.

Но в целом посыл поддерживаю, должны. Вот бы их заставить как-нибудь.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от zurg

Ага, конечно гарантирует. 10 раз. Все тринадцать страниц списка UB из стандарта. Ололоэ!

Тут каждый второй сишник ЛОРа членом в лоб себя бить готов за право с гордостью писать код, полный UB, при этом заморозив версию компилятора, в ночных кошмарах предсталяя себе количество говна, которое всплывёт при попытке обновиться. Один аж до сих пор код компилит в MSVC97.

hateyoufeel ★★★★★
() автор топика

и прочие фишки нового стандарта
B.2. Missing #embed. Unfortunately, as of March 2024, the #embed feature does not seem to have arrived in the compilers that we have at our disposal.

// clang-19/clang-20 -std=c23 embed.c

#include <stdio.h>

const char source[] = {
#if defined(__has_embed) && __has_embed("embed.c")
# embed "embed.c"
, '\0'
#else
"#embed directive is missing\0"
#endif
};

int main()
{
    printf("%s\n", source);
}

Работает с clang-19/20, а с gcc 14.2.0 – нет.

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

если 10 человек будет - закажу на паритетных началах - каждый платит за свой экзземпляр + пересылка, в Москве на Юго-Западе или в (иногда по договоренности) центре могу передать в руки.

Как люди наберутся = сделаю чатик в телеге и организуемся.

aiqu6Ait ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.