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

вопрос о несовместимых спецификаторах формата printf
Я просто просматривал справочную страницу для printf, и кое-что пришло мне в голову. Мне было интересно, есть ли здесь «языковые юристы», которые могли бы ответить на относительно простой вопрос :-P. Таким образом, модификатор 't' определяется как...
1007 просмотров
c c99
schedule 03.07.2022

Почему новые строки опций формата printf() не были приняты как часть C99?
Исследуя, как сделать строки кросс-платформенного формата printf() в C (то есть, принимая во внимание количество битов, которое, как я ожидаю, должен иметь каждый целочисленный аргумент printf() ), я наткнулся на этот раздел статьи Википедии о...
7686 просмотров
schedule 18.04.2023

учебные пособия по конечным автоматам
Мне просто интересно, знает ли кто-нибудь в Интернете несколько хороших руководств по разработке конечных автоматов. Или электронные книги? Я начинаю работать над конечными автоматами, и мне просто нужно что-то общее, чтобы начать.
137016 просмотров
schedule 07.08.2023

Какова семантика ограничения C99 в отношении указателей на указатели?
Я много занимаюсь матричной арифметикой и хотел бы воспользоваться квалификатором указателя restrict C99. Я хотел бы настроить свои матрицы как указатели на указатели, чтобы облегчить индексацию, например: int **A = malloc (ncols * sizeof(int...
2455 просмотров

Препроцессор C сначала удаляет комментарии или раскрывает макросы?
Рассмотрим эту (ужасную, ужасную, плохую, очень плохую) структуру кода: #define foo(x) // commented out debugging code // Misformatted to not obscure the point if (a) foo(a); bar(a); Я видел, как препроцессоры двух компиляторов генерируют...
28725 просмотров
schedule 11.03.2023

компиляция с c89 и c99 делает ли gcc 4.4.2 по умолчанию c99?
Я использую gcc 4.4.2 в Linux Мне просто интересно, автоматически ли gcc по умолчанию компилируется с c99 в качестве последнего стандарта? Как я могу указать, хочу ли я компилировать c89 или c99? Большое спасибо за любой совет,
8689 просмотров
schedule 09.05.2023

Создать статически связанный двоичный файл, который использует getaddrinfo?
Я включил заголовок netdb.h , где включен getaddrinfo , но gcc выдает это предупреждение: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking gcc -m32...
39301 просмотров
schedule 06.02.2024

Объявление массива отрицательной длины
Что происходит в C, когда вы создаете массив отрицательной длины? Например: int n = -35; int testArray[n]; for(int i = 0; i < 10; i++) testArray[i]=i+1; Этот код скомпилируется (и не выдаст никаких предупреждений с включенным...
12004 просмотров
schedule 28.06.2023

Является ли это недопустимым использованием указателей ограничения?
Предположим, у меня есть большой массив, в который я вычисляю индекс и передаю его второй функции. В качестве простого примера, что-то вроде: void foo(float* array, float c, unsigned int n) { for (unsigned int i = 0; i < n; ++i)...
2100 просмотров
schedule 20.10.2022

Каково определение неполного типа и типа объекта в C?
Каково определение неполного типа и типа объекта в C? Кроме того, не могли бы вы привести несколько примеров каждого из них? ANSI C99 упоминает обе категории типов в разных местах, хотя мне было трудно понять, что именно означает каждая из них...
4122 просмотров
schedule 15.11.2022

Следование указателям в многопоточной среде
Если у меня есть код, который выглядит примерно так: typedef struct { bool some_flag; pthread_cond_t c; pthread_mutex_t m; } foo_t; // I assume the mutex has already been locked, and will be unlocked // some time after this function...
239 просмотров

C99 не C-версия по умолчанию для GCC?
Почему GCC не компилирует C99 по умолчанию? Я имею в виду, почему необходимо добавлять флаг --std=c99 каждый раз, когда пишется код на C99?
5654 просмотров
schedule 01.10.2022

Включение VLA (массивов переменной длины) в MS Visual C ++?
Как я могу включить использование VLA, массивов переменной длины, как определено в C99, в MS Visual C ++ или это вообще невозможно? Да, я знаю, что стандарт C ++ основан на C89 и что VLA недоступны в стандарте C89 и, следовательно, недоступны в C...
18884 просмотров
schedule 22.08.2022

Генерация объявления функции с использованием итерации макроса
Я пытаюсь сгенерировать объявление функции с помощью макроса /* goal: generate int f(int a, float b) */ template<typename P> struct ptype; template<typename P> struct ptype<void(P)> { typedef P type; }; #define NAMEe #define...
5671 просмотров

Гибкий элемент массива (c99) внутри структуры
Я использую этот код некоторое время, и он отлично работает, но у меня возникла головная боль при его реализации. Он использует гибкий элемент массива (FAM) aka Struct Hack. Теперь, когда C99 имеет возможность использовать массив переменной длины...
1355 просмотров
schedule 28.05.2022

Стандартная альтернатива трюку GCC ## __ VA_ARGS__?
Существует хорошо известный проблема с пустыми аргументами для макросов с переменным числом аргументов в C99. пример: #define FOO(...) printf(__VA_ARGS__) #define BAR(fmt, ...) printf(fmt, __VA_ARGS__) FOO("this works fine");...
80271 просмотров
schedule 18.06.2022

Сдвиг вправо ›› в C99
Возможный дубликат: Странное поведение оператора сдвига вправо Привет Почему оба числа из этой функции печатаются одинаково? Это не циклический сдвиг. unsigned int i=0x89878685; int main() { printf("0x%x\n", i);...
669 просмотров
schedule 03.01.2024

Доступ к массивам в указателе на структуру
У меня есть простая структура: typedef struct { void *things; int sizeOfThings; } Demo; Things предназначен для хранения массива отдельных «вещей», таких как, возможно, строки или целые числа. Я создаю указатель на него: Demo *...
3521 просмотров
schedule 16.10.2022

Одномерный доступ к многомерному массиву: это четко определенное поведение?
Я полагаю, мы все согласны с тем, что C считается идиоматичным для доступа к настоящему многомерному массиву путем разыменования указателя (возможно, смещения) на его первый элемент одномерным способом, например: void clearBottomRightElement(int...
6603 просмотров

C99 - почему ложь и истина определены как 0 и 1, а не как ((bool) 0) и ((bool) 1)?
Просто наткнулся на утверждение, которое не удалось, поскольку оно сравнивало false с типом возврата функции, поскольку сама функция вернула bool, а assert проверил не только значение, но и тип возвращаемого значения на соответствие ложному, чтобы...
6849 просмотров
schedule 29.06.2022