c11
Позволяет ли стандарт C11 (заметьте, я не имею в виду C++11) объявлять переменные в любом месте функции? Приведенный ниже код недопустим в ANSI C (C89, C90): int main() { printf("Hello world!"); int a = 5; /* Error: all variables should be declared at the beginning of the function. */ return 0; } Д...
Здесь есть связанный вопрос "что": грамматическая неоднозначность C11 между спецификатором _Atomic type и квалификатором Что меня интересует, так это Почему, поскольку обоснование C11 еще не опубликовано, и это кажется излишне сложным. Грамматика включает в себя оба из них (и разрешает неоднозначность в ...
Я только что заметил, что была внесена поправка в стандарт C11 под названиемISO/IEC 9899:2011/Cor 1:2012 . Что было изменено в этом обновлении?...
Есть ли способ использовать ключевое слово _Generic несколько раз в одном и том же выражении для создания одного строкового литерала? То, что я ищу, - это способ, например, генерировать одну строку формата для передачи в printf, со всеми спецификаторами преобразования, адаптированными к соответствующим типам...
Используя функцию _Generic в C11, как вы справляетесь со строковыми литералами? Например: #include <stdio.h> #define foo(x) _Generic((x), char *: puts(x)) int main() { foo("Hello, world!"); return 0; } Выдает эту ошибку на clang: controlling expression type 'char [14]' not compatible wit...
Задается такая структура: struct foo { atomic_int refcount; /* atomic access */ char* bar1; /* read-only */ char* bar2; /* read-only */ }; Строго говоря: необходимо ли использовать atomic_intptr_t для bar1 и bar2, чтобы гарантировать сквозную видимость неатомных переменных, п...
Например, в новый стандарт C11 были добавлены stdalign.h и threads.h. Почему не stdthreads.h или align.h? Это делается для того, чтобы избежать коллизий с существующими библиотеками и системными заголовками?...
у меня есть небольшой кусок кода, о sizeof оператор с тернарным оператором: #include <stdio.h> #include <stdbool.h> int main() { bool a = true; printf("%zun", sizeof(bool)); // Ok printf("%zun", sizeof(a)); // Ok printf("%zun", sizeof(a ? true : false)); // Why 4? return...
это неопределенное поведение для печати нулевых указателей с %p спецификатор преобразования? #include <stdio.h> int main(void) { void *p = NULL; printf("%p", p); return 0; } вопрос относится к стандарту C, а не к реализациям C....
прочитал этой вопрос о noreturn атрибут, который используется для функций, которые не возвращаются вызывающему объекту. тогда я сделал программу в C. #include <stdio.h> #include <stdnoreturn.h> noreturn void func() { printf("noreturn funcn"); } int main() { func(); } и генери...