c- все статьи тега ➜ страница 3


Позволяет ли связывание C С C++ избежать неопределенного поведения, которое является законным в C, но не C++?

Если у вас есть файл C, скомпилированный с помощью компилятора C и имеющий определенное поведение для C, но не C++, можно ли связать его с файлом C++ и не иметь неопределенного поведения? В бла.c (файл, скомпилированный как C) struct x { int blah; char buf[]; }; extern char * get_buf(struct x * base); extern struct x * make_struct(int blah, int size); Blah_if.h extern "C" { struct x; char * get_buf(struct x * base); struct x * make_struct(int blah, int size); } Some ...

Как инициализировать массив argv в C

Я пытаюсь инициализировать * argv с помощью следующих значений: test_file model result Кто-нибудь может помочь мне, как непосредственно инициализировать argv вместо использования командной строки. Я делаю это так: *argv[]= {"test_file","model","output",NULL}; Но это не работает. Я знаю, что это просто, но я новичок в программировании. Кто-нибудь может мне помочь? ...

Использование пользовательской камеры в OpenCV (через GStreamer)

Я использую доски Nitrogen6x с камеры ov5640(мипи). Камера не использует стандартный v4l/v4l, но мы можем передавать видео с помощью GStreamer для его драйвера (mfw_v4l): gst-launch mfw_v4lsrc ! autovideosink Я хочу использовать камеру в OpenCV, вызвав ее через GStreamer (GStreamer inside OpenCV). Я задал вопрос о вызове GStreamer внутри OpenCV здесь , и это продолжение. Если я включаю поддержку GStreamer, она проверяется в исходном коде , но OpenCV пытается использовать стандартный V4L/V4 ...

Как не открыть файл дважды в linux?

У меня есть связанный список с fd и строкой, которую я использовал, чтобы открыть этот файл в каждой записи. Я хочу открывать и добавлять файлы в этот список, только если этот файл еще не открыт, потому что я открываю и анализирую эти файлы и не хочу делать это дважды. Моя идея состояла в том, чтобы сравнить имя файла с каждым именем в этом списке, но моя программа делает это несколько раз, и один файл в Linux может иметь несколько имен (мягкие/жесткие ссылки). Я думаю, что это не должно быть та ...

бинарное дерево поиска "содержит" функцию

Попытка создать функцию contains для бинарного дерева. Функция выглядит следующим образом: bool contains(bt_node* top, int data) { if (top == NULL) return false; else { if (data == top->data) return true; else if (data < top->data) contains(top->left, data); else if (data > top->data) contains(top->right, data); } } Функция возвращает false для значения, которое на самом деле находится в дереве. Кто-нибудь может помочь? Спасибо, ...

DES encrypt в C / C++ vs Java

Просто интересно, почему один и тот же простой текст, зашифрованный в Java и C, не генерирует один и тот же зашифрованный текст. Для DES algo я заметил Вход text = "text", key = "test" C шифрованный текст len = 24 Java генерирует зашифрованный текст len = 8 Для 256Bit AES я заметил аналогичную разницу C шифрованный текст len = 32 Java генерирует зашифрованный текст len = 16 Вот мой" C " код char* enc(const char* text, const char* keyStr) { EVP_CIPHER_CTX ctx; unsigned char ke ...

Как инициализировать структуру до null?

У меня есть структура, которая содержит две другие структуры того же типа, и я хочу инициализировать ее, чтобы иметь оба NULL для запуска. Как мне это сделать? Я пробовал ниже, но получаю предупреждения компилятора с gcc. #include <stdio.h> typedef struct Segment { int microseconds; } Segment; typedef struct Pair { Segment mark; Segment space; } Pair; int main() { Pair mark_and_space = { .mark = NULL, .space = NULL }; return 0; } И предупреждения компилятора: ...

LP64, LLP64 и переход IL32

Во время перехода от 16 к 32 битам в 80-х годах int был либо 16, либо 32 бит. Используя текущую 64-битную номенклатуру переходов, я понимаю, что было довольно равномерное распространение машин ILP32 и LP32. В то время, я думаю, было понятно, что int всегда будет следовать за регистром или шириной указателя для любой заданной архитектуры, и что long останется 32-битным. Перемотав вперед 25 лет, я вижу, что LP64 довольно распространен, но пока я не столкнулся с 64-битными платформами [мой открыти ...

Формула Лейбница для π / 4

Меня просят вывести суммирование формулы Лейбница до n-го члена ряда с точностью до 15 десятичных знаков. places.In исчисление, формула Лейбница для π задается: 1 - 1/3 + 1/5 -1/7 + ... = π/4 Это мой код #include<stdio.h> #include<math.h> int main() { int n,i; long double s=0; scanf("%d",&n); for(i=0;i<n;i++){ s+=(long double)pow(-1,i)/(2*i+1); } printf("%Lfn",s); return 0; } Может ли кто-нибудь сказать мне, почему я не могу достичь то ...

непредсказуемые ошибки с плавающей запятой при разложении матрицы

Я пытаюсь разложить матрицу перспектив на ближние и дальние расстояния, используя следующую формулу: near = m32 / (m22 - 1); far = m32 / (m22 + 1); Здесь параметры теста перспективной матрицы: aspect = 0.782f; fovy = glm_rad(49.984f); nearDist = 0.1550385f; farDist = 6000.340975f; glm_perspective(fovy, aspect, nearDist, farDist, proj); Вот что я делаю, чтобы получить ближние и дальние значения (proj-это матрица с большим столбцом): far = proj[3][2] / (proj[2][2] + 1 ...

Почему в Python weekday() отличается от tm wday в C?

Документация Python определяет datetime.weekday() какцелое число, где понедельник равен 0, а воскресенье-6 , в то время как C tm.tm_wday определяется какдней с воскресенья . Поэтому tm_wday есть (datetime.weekday() + 1) % 7, что весьма неудобно. Учитывая, что Python обычно держится близко к эквивалентам C, почему это было сделано таким образом? ...

Синтаксический анализ аргументов командной строки Win32 API

Я пишу консольное приложение Win32, которое можно запустить с дополнительными аргументами, такими как: app.exe /argName1:"argValue" /argName2:"argValue" Должен ли я анализировать его вручную (чтобы иметь возможность определить, какие аргументы присутствуют) из переменных argc/argv, или Win32 API содержит некоторые аргументы парсера? ...

FsRtlIsNameInExpression никогда ни с чем не совпадает

Я делаю сопоставление строк в драйвере ядра с помощью алгоритма Бойера-Мура, но мне также нужно реализовать базовую поддержку подстановочных знаков. Этот ответ на SO упомянул функцию FsRtlIsNameInExpression, что выглядит как раз для моих нужд. Похоже, что он даже обрабатывает нечувствительность к регистру для строк Unicode. Но он даже не может заставить его сопоставить простую строку с собой. Я попробовал несколько вещей, но FsRtlIsNameInExpression никогда ни с чем не совпадает. Вот некоторые ...

Почему uint32 t предпочтительнее, чем uint fast32 t?

Кажется, что uint32_t гораздо более распространено, чем uint_fast32_t (я понимаю, что это анекдотическое свидетельство). Хотя мне это кажется противоречащим здравому смыслу. Почти всегда, когда я вижу, что реализация использует uint32_t, все, что ей действительно нужно, - это целое число, которое может содержать значения до 4,294,967,295 (обычно гораздо более низкая граница где-то между 65,535 и 4,294,967,295). Кажется странным использовать uint32_t, так как 'ровно 32 бита' гарантия не нужна, ...

Передача массива в функцию и использование sizeof в Arduino

Я Arduino падаван ученик. Я хочу передать массив байтов функции и получить размер массива. byte data[] = { B00000000, B00000001, B00000011, B00000111 }; Serial.println(sizeof(data)); // ----------------------> displays 4 Когда я передаю его функции sizeof возвращает 2. Как я могу заставить его вернуть 4 также в функции? writeData(data); void writeData(byte data[]) { Serial.println(sizeof(data)); // -------------------> displays 2 } ...

Без доступа к argv[0], как я могу получить имя программы?

Я знаю, что имя программы передается в качестве первого аргумента, и следующий простой пример выведет его на стандартный вывод: #include <iostream> int main ( int argc, char *argv[] ) { std::cout<<argv[0]<<std::endl; } Существует ли функция для получения имени программы? EDIT Я запускаю программу из оболочки, и приведенный выше код всегда будет печатать имя программы (я использую fedora 9, но я уверен, что он работает в других дистрибутивах). Я обнаружил, что каталог ...

Как хранить данные в динамическом массиве структур?

У меня есть эти структуры, с помощью которых я хотел бы реализовать карту typedef struct { const char *name; int number; } Entry; typedef struct { int available; int guard; Entry *entries; } Map; И код для работы по инициализации и помещению в него элементов: Map *map_init() { Map *res = (Map *) malloc(sizeof(Map)); res->available = 4; res->guard = 0; res->entries = (Entry *) malloc(4 * sizeof(Entry)); return res; } int map_put(Map *ma ...

Вызов функции void* из main в C

В настоящее время я работаю над программой, которая использует потоки для вычисления суммы квадратных корней. Моя программа работает, однако одним из требований является использование основного потока для поиска начального значения, и как только я вызываю функцию Void *calc из main, программа прерывается. Существует ли определенный способ сделать такой вызов функции? Это потому, что функция является указателем? Любая помощь ценится. #include <pthread.h> #include <stdio.h> #include & ...

Не %[] или[^] спецификатор в scanf(),использования sscanf() или функции fscanf() магазин входных В с завершающим нулем массив символов?

Вот что такое руководство Beez C (ссылка) рассказывает о спецификаторе формата %[]: It allows you to specify a set of characters to be stored away (likely in an array of chars). Conversion stops when a character that is not in the set is matched. Я был бы признателен, если бы Вы прояснили некоторые основные вопросы, вытекающие из этой посылки: 1) являются ли входные данные, полученные этими двумя спецификаторами формата, хранящимися в аргументах (типа char*) как массив символов или массив ...

Как промыть входной буфер UDP-сокета в C?

Как очистить входной буфер (если он вообще существует) UDP-сокета в C ? Я работаю над встроенной средой Linux и использую C для создания собственного приложения. Существует несколько таких встроенных машин в одной и той же сети, и когда на одной из них происходит событие (назовем его информатором), информатор должен отправить сетевое сообщение на сетевой широковещательный адрес, чтобы все машины в сети (включая информатора) знали об этом событии. событие и выполняет некоторые действия в соответ ...