Вопросы по теме 'c11'

Могу ли я преобразовать указатель структуры, чтобы он указывал на исходный анонимный элемент в C1x? Это вообще правильный вопрос?
Меня немного смущают анонимные структуры в C1x. Применяется ли правило, согласно которому указатель структуры, соответствующим образом преобразованный, указывает на свой первый элемент, к исходной анонимной структуре или просто к начальному члену...
690 просмотров
schedule 25.12.2022

Как char[] может представлять строку UTF-8?
В C11 добавлен новый строковый литерал с префиксом u8. Это возвращает массив символов с текстом, закодированным в UTF-8. Как это вообще возможно? Разве обычный символ не подписан? Это означает, что у него на один бит меньше информации для...
5091 просмотров
schedule 15.07.2022

Выравнивание элементов структуры с _Alignas
Меня интересовало следующее: применим ли новый спецификатор выравнивания _Alignas в C11 к членам структуры? Я всегда предполагал это, но тщательное чтение общедоступного черновика N1570, похоже, указывает на то, что спецификатор-спецификатор не...
1466 просмотров
schedule 19.03.2023

Частичное присвоение структуры в C99+
Извините за плохой английский. Предположим, код (C99 или новее): typedef struct { int a, b; } foo_t; foo_t f = { .a = 1, .b = 2 }; f = (foo_t){ .b = 3 }; Что такое f.a сейчас? Говорит ли стандарт C что-нибудь об этом? Я знаю,...
529 просмотров
schedule 03.12.2023

Спецификатор класса хранения _Thread_local в C?
Я прочитал примечание в книге C How to Program 7th о каком-то новом стандартном классе хранения C с именем _Thread_local : Новый стандарт C добавляет спецификатор класса памяти _Thread_local , который выходит за рамки этой книги. Я...
3066 просмотров

Что такое байт согласно C11?
Из проекта стандарта C11, раздел главы 1, раздел 3: 3.6 байт : адресная единица хранения данных, достаточно большая, чтобы вместить любой член основного набора символов среды выполнения. ПРИМЕЧАНИЕ 1. Возможно уникальное выражение адреса...
1239 просмотров
c c11
schedule 27.08.2022

Обобщения для многопараметрических функций C в C11
Я понимаю дженерики C11 для однопараметрических функций, например: (из здесь ) #define acos(X) _Generic((X), \ long double complex: cacosl, \ double complex: cacos, \ float complex: cacosf, \ long double: acosl, \ float:...
7617 просмотров
c c11
schedule 22.08.2022

Заголовок для функции scanf_s
Отвечая на этот вопрос, я скомпилировал код на Ideone и получил эту ошибку implicit declaration of function ‘scanf_s’ [-Wimplicit-function-declaration] Разве stdio.h не является заголовком для scanf_s ?
9622 просмотров

Получение указателя за концом с использованием адреса массива
В C и C++ часто полезно использовать указатель за концом для написания функций, которые могут работать с произвольно большими массивами. C++ предоставляет перегрузку std::end , чтобы упростить эту задачу. С другой стороны, в C я обнаружил, что...
790 просмотров
schedule 19.07.2023

Почему auto a=1; компилировать на С?
Код: int main(void) { auto a=1; return 0; } компилируется без ошибок компилятором MS Visual Studio 2012, когда файл имеет расширение .c. Я всегда думал, что когда вы используете расширение .c, компиляция должна быть в соответствии с...
36360 просмотров
schedule 11.04.2022

void ** параметр без временной переменной
У меня есть функция с таким прототипом: ErrorType function(void ** parameter, other_args); Эта функция считывает указатель, на который указывает «параметр», и изменяет его (подумайте об этом как о realloc). Теперь, чтобы быть правым в...
182 просмотров
schedule 25.06.2022

Проверка времени компиляции для нескольких типов в C?
В настоящее время у меня есть макрос для проверки значения типа. #define CHECK_TYPE_INLINE(val, type) \ ((void)(((type)0) != (0 ? (val) : ((type)0)))) В некоторых случаях это полезно для проверки типов аргументов макроса. Но что, если...
190 просмотров
schedule 10.07.2022

Может ли _Generic быть функцией? Или можно ли использовать _Generic с __attribute__((cleanup))?
Учитывая следующий исходный код: #include <stddef.h> #include <sys/types.h> #include <dirent.h> static inline void closedirp(DIR **p) { if (*p) closedir(*p); } #define auto_cleanup(resource) _Generic((resource),...
171 просмотров
schedule 25.05.2024

C11 Вложенная инициализация
Есть ли в C11 способ создать вложенную инициализацию для достижения того, что я описал в «test_successor_set»? Поиски Google для вложенной инициализации C11 до сих пор не показали никаких примеров. Возможно, это невозможно. Я зашел так...
98 просмотров
c c11
schedule 11.07.2022

Какой ABI, если он есть, ограничивает размер [u] intmax_t?
Начиная с издания 1999 года, стандарт ISO C определяет стандартный заголовок <stdint.h> , который, помимо прочего, определяет typedefs intmax_t и uintmax_t . Они обозначают, соответственно, «(знаковый | беззнаковый) целочисленный тип,...
1084 просмотров
schedule 10.05.2022

Существуют ли какие-либо фактические реализации, которые разрешают `char array[SIZE_MAX];` (или успешный эквивалент с использованием `malloc`)?
Стандарт C99 предполагает, что тип size_t достаточно велик для хранения размера любого объекта, поскольку он является результирующим типом оператора sizeof . Оператор sizeof возвращает размер (в байтах) своего операнда, который может быть...
206 просмотров
schedule 06.11.2022

Смежные символьные и строковые литералы
Это известный факт, что в C вы можете написать "a" "b" и получить "ab" . Это обсуждается в стандарте C11 : На этапе трансляции 6 последовательности многобайтовых символов, заданные любой последовательностью смежных символов и токенов...
147 просмотров
schedule 17.09.2023

Конфликтует ли реализация strtoul в glibc со стандартом C11?
Ниже приводится описание функции strtoul в stdlib.h , реализованной glibc: Функция: unsigned long int strtoul (const char * retrict string, char ** restrict tailptr, int base) Предварительно: | Региональный стандарт MT-Safe | AS-Safe |...
302 просмотров
schedule 19.02.2023

Как использовать стандарт C11 в Code :: Blocks
Как сказано в заголовке, мне нужно заставить code::blocks работать с C11 , и я не могу понять, как это сделать. Я перешел к settings => compiler settings => Other options , добавил -std=c11 и попробовал также с -std=gnu11 , оба не...
13886 просмотров
schedule 01.02.2024

поддержка BitSet в c11
Я переношу некоторый код, написанный на Java, на C11. Код Java использует BitSet для перестановки битов в векторе. Я знаю, что для c++ существует соответствующий BitSet, но я не уверен, что для c11 доступно что-то подобное. Я должен использовать...
242 просмотров
schedule 16.04.2022