Вопросы с тегом «c»

C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.

4
Как фотошоп совмещает два изображения вместе? [закрыто]
Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow. Закрыт 1 год назад . Уточните этот вопрос Может кто-нибудь объяснить, как Photoshop смешивает два изображения вместе, чтобы я мог воспроизвести …

12
Почему `free` в C не берет количество байтов, которые нужно освободить?
Чтобы быть ясным: я знаю, что mallocи freeони реализованы в библиотеке C, которая обычно выделяет фрагменты памяти из ОС и выполняет собственное управление для распределения меньших объемов памяти для приложения и отслеживает количество выделенных байтов. . Этот вопрос не в том, как бесплатно узнать, сколько бесплатно . Скорее, я хочу …

7
Как вызвать функцию C ++ из C?
Я знаю это. Вызов функции C из C ++: Если бы мое приложение было на C ++ и мне пришлось бы вызывать функции из библиотеки, написанной на C. Тогда я бы использовал //main.cpp extern "C" void C_library_function(int x, int y);//prototype C_library_function(2,4);// directly using it. Это не повлияет на имя, C_library_functionи …
84 c++  c  visual-c++  extern-c 

2
Как именно работает трюк с двойной строкой?
По крайней мере, некоторые препроцессоры C позволяют вам преобразовать значение макроса в строку, а не его имя, передав его через один функционально-подобный макрос другому, который преобразовывает его в строку: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ Примеры использования здесь . Это работает, …

12
Как я могу заставить мой код C автоматически распечатывать хэш версии Git?
Есть ли простой способ написать код C, который может получить доступ к его хеш-версии Git? Я написал программное обеспечение на языке C для сбора научных данных в лабораторных условиях. Мой код записывает собранные данные в файл .yaml для последующего анализа. Мои эксперименты меняются изо дня в день, и мне часто …

5
Что вызывает ошибку сломанной трубы?
Я знаю, что ошибка сломанной трубы возникает, когда сокет на стороне узла закрывается. Но в своем тесте я заметил, что немедленный вызов send на этой стороне, когда одноранговая сторона закрыта, не всегда приводит к ошибке разрыва канала. Например: После закрытия сокета на стороне однорангового узла (я попытался выполнить чистое закрытие, …
84 c  broken-pipe 

9
Что быстрее: x << 1 или x << 10?
Я не хочу ничего оптимизировать, клянусь, я просто хочу задать этот вопрос из любопытства. Я знаю, что на большинстве оборудования есть сборочная команда битового сдвига (например shl, shr), которая представляет собой единственную команду. Но имеет ли значение (с точки зрения наносекунды или с точки зрения процессора), сколько бит вы сдвигаете. …
84 c++  c  performance  cpu  low-level 

3
Почему память CUDA так быстро закреплена?
Я наблюдаю значительное ускорение передачи данных, когда использую закрепленную память для передачи данных CUDA. В Linux основным системным вызовом для достижения этой цели является mlock. На странице руководства mlock говорится, что блокировка страницы предотвращает ее замену: mlock () блокирует страницы в диапазоне адресов, начиная с addr и продолжая len байтов. …
84 c++  c  linux  cuda 

10
Почему вы должны использовать strncpy вместо strcpy?
Изменить: я добавил источник для примера. Я наткнулся на такой пример : char source[MAX] = "123456789"; char source1[MAX] = "123456789"; char destination[MAX] = "abcdefg"; char destination1[MAX] = "abcdefg"; char *return_string; int index = 5; /* This is how strcpy works */ printf("destination is originally = '%s'\n", destination); return_string = strcpy(destination, …

10
Есть ли элегантный и быстрый способ проверить, что 1-бит целого числа находится в непрерывной области?
Мне нужно проверить, образуют ли позиции (от 0 до 31 для 32-битного целого числа) с битовым значением 1 непрерывную область. Например: 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous Я хочу, чтобы этот тест, то есть какая-то функция has_contiguous_one_bits(int), был переносимым. Один из очевидных способов - перебрать позиции, чтобы найти первый …



4
Разница между поверхностью и текстурой (SDL / общие)
Может ли кто-нибудь объяснить мне простыми словами, в чем разница между текстурой и поверхностью? Я видел это использовалось в SDL2качестве SDL_Surfaceи SDL_Texture. SDL_Textureсоздается, из SDL_Surfaceкоторого, в свою очередь, создается из изображения / растрового изображения. Оба представляют собой набор пикселей. Но я не вижу между ними основной разницы (причем тут что-то …
84 c  graphics  sdl  sdl-2 

3
Как бороться с конфликтами символов между статически связанными библиотеками?
Одно из самых важных правил и передовых практик при написании библиотеки - поместить все символы библиотеки в пространство имен, специфичное для библиотеки. C ++ упрощает это благодаря namespaceключевому слову. В C обычный подход заключается в добавлении к идентификаторам префикса, специфичного для библиотеки. Правила стандарта C поставить некоторые ограничения на тех …

16
значение по умолчанию для члена структуры в C
Можно ли установить значения по умолчанию для некоторого члена структуры? Я пробовал следующее, но это вызвало синтаксическую ошибку: typedef struct { int flag = 3; } MyStruct; Ошибки: $ gcc -o testIt test.c test.c:7: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token test.c: In function ‘main’: test.c:17: …
84 c  struct 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.