Вопросы по теме '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 просмотров
schedule
01.06.2022
Что такое байт согласно C11?
Из проекта стандарта C11, раздел главы 1, раздел 3:
3.6 байт : адресная единица хранения данных, достаточно большая, чтобы вместить любой член основного набора символов среды выполнения.
ПРИМЕЧАНИЕ 1. Возможно уникальное выражение адреса...
1239 просмотров
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 просмотров
schedule
22.08.2022
Заголовок для функции scanf_s
Отвечая на этот вопрос, я скомпилировал код на Ideone и получил эту ошибку
implicit declaration of function ‘scanf_s’ [-Wimplicit-function-declaration]
Разве stdio.h не является заголовком для scanf_s ?
9622 просмотров
schedule
23.10.2023
Получение указателя за концом с использованием адреса массива
В 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 просмотров
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