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

Разрешает ли C11 объявления переменных в любом месте функции?
Позволяет ли стандарт C11 (заметьте, я не имею в виду C++11) объявлять переменные в любом месте функции? Код ниже недействителен в ANSI C (C89, C90): int main() { printf("Hello world!"); int a = 5; /* Error: all variables should be declared...
1987 просмотров
schedule 11.01.2024

Использование _Noreturn в C11
Возможный дубликат: Что такое точка атрибута Noreturn? C11 представил атрибут _Noreturn , чтобы указать, что функция никогда не возвращает значение. Помимо ценности документации в исходном коде, какие еще преимущества дает этот...
7560 просмотров
c c11
schedule 17.07.2023

Создание вложенных структур без -fms-расширений?
У меня есть структура с некоторыми свойствами: struct a { char* id; int a; int b; int c; } У меня также есть структура с теми же свойствами, но без id . struct b { int a; int b; int c; } Я знаю, что C11...
372 просмотров
schedule 12.04.2023

_Alignas для членов структуры с помощью clang и C11
У меня возникли проблемы с -Wpadded с использованием C11 и структур. Я уже прочитал Выравнивание элементов структуры с помощью _Alignas и просмотрел документы clang и увидел, что он теперь поддерживается. Кроме того, я использую очень новую...
3604 просмотров
schedule 10.04.2023

Гарантированно ли (uint64_t)-1 даст 0xffffffffffffffff?
Я знаю, что в стандарте C четко определено, что (unsigned)-1 должно давать 2^n-1, т.е. е. целое число без знака со всеми установленными битами. То же самое касается (uint64_t)-1ll . Однако я не могу найти что-то в стандарте C11, определяющее,...
7185 просмотров
schedule 25.11.2022

C11 _Generic: как работать со строковыми литералами?
Используя функцию _Generic в C11, как вы справляетесь со строковыми литералами? Например: #include <stdio.h> #define foo(x) _Generic((x), char *: puts(x)) int main() { foo("Hello, world!"); return 0; } дает эту ошибку на...
3290 просмотров
schedule 18.05.2022

Существуют ли компиляторы C99, где с настройками по умолчанию -1››1 != -1?
Многие люди часто отмечают при обсуждении оператора сдвига вправо, что в стандарте C явно указано, что эффект сдвига вправо отрицательного числа определяется реализацией. Я могу понять историческую основу для этого утверждения, учитывая, что...
299 просмотров
schedule 20.06.2023

Разница между scanf и scanf_s в C
Хотя моя программа выдает требуемый результат. Есть много предупреждений о том, что scanf() не следует использовать, и вместо этого попробуйте использовать scanf_s() . Возможная причина этого предупреждения?? Это происходит со всеми...
1320 просмотров
schedule 10.07.2023

Проверка времени компиляции полиморфных типов в C?
Полиморфные структуры довольно распространены в C, но часто включают явное приведение типов, позволяющее случайно преобразовать несовместимые структуры. struct ID { char name[32]; }; struct IntID { struct ID id_base; int value; }...
122 просмотров
schedule 20.05.2022

Использование макроса в определении анонимной структуры C11
Типичный способ C99 для расширения структуры выглядит примерно так: struct Base { int x; /* ... */ }; struct Derived { struct Base base_part; int y; /* ... */ }; Затем мы можем преобразовать экземпляр struct Derived * в...
250 просмотров
schedule 02.01.2024

C: Есть ли что-то, что называется «префиксным выражением»?
ISO/IEC 9899:2011 (Американский национальный стандарт для C11) говорит о постфиксных выражениях, но ничего не называется префиксным выражением. Почему так?
82 просмотров
schedule 18.01.2023

scanf и спецификатор преобразования p
В спецификации C11 сказано, что тип аргумента %p должен быть void ** в случае функции scanf() , но я не могу понять, как ввести адрес и сохранить его в void ** . На самом деле, если я попытаюсь сделать: void **p; scanf("%p", p); Я...
2185 просмотров
schedule 21.04.2023

Как перейти с fopen на fopen_s
Visual Studio жалуется на fopen. Я не могу найти правильный синтаксис для его изменения. У меня есть: FILE *filepoint = (fopen(fileName, "r")); to FILE *filepoint = (fopen_s(&,fileName, "r")); Какова остальная часть первого...
73767 просмотров
schedule 17.11.2022

Как скомпилировать стандартную библиотеку c11 на OS X с помощью clang?
Эй, я пытаюсь скомпилировать код c, который использует функции из стандартной библиотеки c11 в OS X с clang. Опция компилятора -std=c11 позволяет мне использовать возможности языка c11. Но когда я использую новые функции, такие как...
1895 просмотров
schedule 13.06.2022

Как использовать новые типы char16_t и u8?
c11 улучшить поддержку кодирования со встроенными типами для utf-8, utf-16 и utf-32. Однако мне совершенно не удалось найти ссылку на их использование в стандартных функциях. Все, что я нашел, это как использовать их в С++ 11, а не в C. Итак,...
1762 просмотров
schedule 08.08.2022

Существуют ли какие-либо реализации, которые поддерживают отрицательный нуль или резервируют его как представление ловушки?
В большинстве современных реализаций целочисленное значение со знаком, которое имеет битовый шаблон 1 для знакового бита и все 0 для битов значения, имеет тенденцию представлять наименьшее возможное значение для этого целочисленного типа со знаком....
157 просмотров
schedule 03.03.2024

почему эта программа отлично компилируется в C11, но не в C99?
Рассмотрим следующую программу: (см. живую демонстрацию здесь ). #include <stdio.h> struct Test { int a; }; typedef struct Test t; typedef struct Test t; int main() { t T={9}; printf("%d",T.a); } Программа отлично...
169 просмотров
schedule 09.07.2022

Использование расширений GCC __sync для переносимой библиотеки C
Я разрабатываю библиотеку C для OS X ( 10.10.x , которая поставляется с GCC 4.2.x ). Эта библиотека должна быть максимально переносимой и не относится к OS X . Я бы хотел, чтобы у конечных пользователей было меньше головной боли при сборке из...
151 просмотров
schedule 21.07.2022

Как объявить идентификатор с внутренней связью в области блока без предварительного объявления этого идентификатора с видимой некоторой связью?
Учти это: #include <stdio.h> static int b; int main() { { int b; { extern int b; b = 2; } } printf("%d", b); } Здесь по определению идентификатор b, которому присвоено...
97 просмотров
schedule 29.03.2024

Соглашение о статусе выхода в программах Unix
Рассмотрим команду Unix foo , которая считывает файл (или stdin ) построчно, где каждая строка должна соответствовать определенному формату, например, формату /etc/passwd . Если какая-либо из строк неверна (но не все), должен ли статус...
113 просмотров
schedule 30.05.2023