Описание тега c23
C23 — это неофициальное название следующего стандарта языка программирования C. Он заменяет C17 и вводит некоторые новые функции.
3
ответа
Есть ли в C char8_t?
Я искал на многих сайтах и ничего не нашел. Я знаю, что char8_t - ключевое слово в C++, начиная с C++ 20. Я пытаюсь узнать в C, они набирают unsigned char к char8_tв C23 (с выпуском символьных литералов u8 ). Кто-нибудь может меня прояснить.
29 мар '21 в 08:36
1
ответ
Реализация эквивалента std :: bit_cast в C
Можно ли реализовать что-то похожее на C ++ 20? std::bit_cast в C? Это было бы намного удобнее, чем использовать union или приведение указателей к разным типам и разыменование. Если бы у вас был, тогда было бы проще реализовать некоторые функции с п…
23 дек '21 в 18:31
1
ответ
В чем смысл атрибута __unused в C?
У меня есть вопрос. Допустим, вы определяете функцию или переменную в C. Если вы ее не используете, компилятор выдает предупреждение о том, что эта переменная/функция не использовалась. Чтобы подавить предупреждение, вы используете атрибут перед объ…
07 янв '21 в 22:06
1
ответ
Ищем stdckdint.h в коллекции gcc 11.2
Я пытаюсь найти копию stdckdint.h, которая, как я полагаю, должна быть в коллекции gcc 11.2, но поиск не позволяет найти ее в загруженном tar-архиве с исходным кодом. Это еще не общедоступно, или мне нужно что-то распаковать/собрать, чтобы получить …
05 апр '22 в 08:36
2
ответа
Почему strnlen() не рассматривается для включения в C23?
Функции strdup()а также strndup()наконец-то попали в грядущий стандарт C23: 7.24.6.4 Функция Синопсис #include <string.h> char *strdup(const char *s); Функция создает копию строки, на которую указывает , в пространстве, выделенном как при вызо…
26 май '22 в 13:55
1
ответ
Как читать из сокета прямо в файл
В C (или C++) есть способ получать данные из сокета, но вместо того, чтобы читать их в буфер в памяти, он «получает» их в файл. Я знаю, что обычный способ сделать это — получить данные в буфер символов, а затем записать буфер в файл. Существует ли т…
03 июн '22 в 03:01
1
ответ
Почему стандарт C23 уменьшает максимальный размер объекта, который должна поддерживать реализация?
В настоящее время я читаю новый проект стандарта C23 (N3088) и заметил, что в §5.2.4.1 стандарта говорится: Реализация должна иметь возможность переводить и выполнять программу, которая использует, но не превышает следующие ограничения для этих конс…
05 фев '23 в 21:03
0
ответов
почему для C23 не выбран слабый атрибут?
Я вижу , что в C23 появился новый тип ключевого слова «атрибуты». Некоторые из них, как[[deprecated]]использовались в C11+GNU__attribute__((deprecated)). Я выгляжу как отличное обновление. Интересно, почему такое полезное ключевое слово, как__attrib…
03 ноя '22 в 16:09
0
ответов
Какова цель новой директивы C23 #embed?
Новая директива препроцессора доступна в грядущем стандарте C23:#embed Вот простой пример: // Placing a small image resource. #include <stddef.h> void show_icon(const unsigned char *, size_t); int main (int, char*[]) { static const unsigned ch…
30 ноя '22 в 00:17
1
ответ
Каковы требования к выравниванию malloc(1)
Я слышал, что успешный вызовmalloc()возвращает указатель, выровненный подходящим образом для любого типа. Тем не менее, кажется бесполезным и расточительным требовать возвращать указатель, выровненный по большему значению, чем1поскольку ни один объе…
05 июл '23 в 09:17
1
ответ
Как избежать упоминания аргументов указателя функции внутри определения функции, которая принимает его в качестве аргумента?
Я пишу этот код C, который предполагает передачу множества указателей на функции, а иногда запись всех аргументов, которые принимает указатель на функцию при определении функции, которая принимает его в качестве аргумента, может значительно увеличит…
27 июн '23 в 08:56
2
ответа
gcc: функции constexpr в C23?
Поигравшись с GCC v14.0 (который должен быть близок к выпуску GCC v13.1), я скомпилировал следующий модуль: constexpr int f (int x) { return x + 2; } constexpr const int x[] = { f(1) }; сgcc -std=c2x -c foo.c -O2но GCC выдает: foo.c:1:1: error: 'con…
22 апр '23 в 13:20
1
ответ
Что такое предлагаемый тип C23 `_Either`?
Предложения C23 n3003 и n2366 вскользь упоминают предлагаемый тип на первой и седьмой страницах соответственно, и мне пока не удалось найти никаких других упоминаний о нем. Насколько я могу судить, он не упоминается ни в рабочем проекте C23 , ни в к…
16 май '23 в 13:20
5
ответов
Как использовать typeof_unqual, чтобы избежать предупреждений компилятора об отмене квалификатора const
В следующем кодеcopyThing()записывается так, что возвращаемое значение имеет тот же тип, что и значение аргумента: extern void *copyThingImpl(const void *x); #define copyThing(x) ((typeof(x)) copyThingImpl(x)) void foo(void); void foo(void) { char *…
15 авг '23 в 15:23
1
ответ
Что такое атрибуты [[reproducible]] и [[unsequenced]] в C23 и когда мне следует их использовать?
C23 представил атрибуты[[reproducible]]и[[unsequenced]]. Какова их мотивация? Как они определяются и какое влияние они оказывают на функцию? К каким функциям мне следует их применять?
06 авг '23 в 21:51
2
ответа
Что касается основных компиляторов и int main(){} в C23
Моя программа: int main(){} В предстоящем C23 удалены непрототипные функции и функции «стиля K&R». Я понимаю, что C23 еще официально не выпущен, но текущее поведение gcc и clang меня смущает. Компиляция вышеизложенного с помощью gcc (магистраль)…
20 апр '23 в 12:04
3
ответа
C23 авто против C++11 авто
В стандарте C23, по-видимому, введено использование ключевого слова «auto» для автоматического определения типа, см. здесь, как и в C++11. Однако, похоже, есть некоторые различия. Согласно здесь, https://en.cppreference.com/w/cpp/keyword/auto после …
14 май '23 в 17:33
1
ответ
В чем разница между float, _Float32, _Float32x и _Float32_t?
C23 представил ряд типов с плавающей запятой, включая, помимо прочего: _Float32x _Float32_t Я не уверен в различиях, таких как: Это ключевые слова, псевдонимы типов или что-то еще? Являются ли они разными типами или могут быть псевдонимами ? Какова …
05 июл '23 в 09:29
2
ответа
Инициализировать статическую константную переменную блочной области с указателем на составной литерал?
Следующий код отклонен GCC и Clang (ссылка godbolt): struct thing; typedef enum { THING_TYPE_A, THING_TYPE_B, } thing_type_t; typedef struct thing_a { int i; } thing_a_t; typedef struct thing_b { struct thing const *t; } thing_b_t; typedef struct th…
10 мар '23 в 04:10
3
ответа
В чем разница между constexpr в C++11 и [[reproducible]] в C23?
В C++11 добавлено ключевое слово constexpr, которое можно добавлять к функциям для указания постоянного поведения. C23 добавил, казалось бы, идентичную функциональность в виде тега [[reproducible]]. Чем отличаются эти два механизма?
05 июл '23 в 15:44