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

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

7
Преобразование в int vs floor
Есть ли разница между ними: float foo1 = (int)(bar / 3.0); float foo2 = floor(bar / 3.0); Насколько я понимаю, в обоих случаях результат одинаковый. Есть ли разница в скомпилированном коде?
120 c++  c  floating-point 

10
Создать указатель на двумерный массив
Мне нужен указатель на статический двумерный массив. Как это сделать? static uint8_t l_matrix[10][20]; void test(){ uint8_t **matrix_ptr = l_matrix; //wrong idea } Я получаю всевозможные ошибки, например: предупреждение: присваивание из несовместимого типа указателя индексируемое значение не является ни массивом, ни указателем ошибка: недопустимое использование гибкого элемента массива
120 c  arrays  pointers 

9
Указатели C: указывающие на массив фиксированного размера
Этот вопрос уходит к гуру Си: В C можно объявить указатель следующим образом: char (* p)[10]; .. что в основном означает, что этот указатель указывает на массив из 10 символов. При объявлении подобного указателя замечательно то, что вы получите ошибку времени компиляции, если попытаетесь назначить указатель на массив другого размера …
120 c  pointers  size 

13
стек вызовов печати на C или C ++
Есть ли способ сбрасывать стек вызовов в запущенном процессе на C или C ++ каждый раз, когда вызывается определенная функция? Я имею в виду примерно следующее: void foo() { print_stack_trace(); // foo's body return } Где print_stack_traceработает аналогично callerPerl. Или что-то вроде этого: int main (void) { // will print …
120 c++  c  linux  callstack 

1
Каким идиоматическим способом в CMAKE добавить параметр компилятора -fPIC?
Я нашел как минимум 3 способа сделать это, и мне интересно, какой из них идиоматический. Это необходимо сделать почти повсеместно для любой статической библиотеки. Я удивлен, что генератор Makefile в CMake не добавляет это автоматически в статические библиотеки. (если я чего-то не упускаю?) target_compile_options(myLib PRIVATE -fPIC) add_compile_options(-fPIC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic") …
120 c++  c  cmake 


27
Каков самый быстрый / самый эффективный способ найти самый высокий установленный бит (msb) в целом числе в C?
Если у меня есть целое число n, и я хочу знать позицию самого старшего бита (то есть, если младший бит находится справа, я хочу знать позицию самого дальнего левого бита, равного 1), какой способ узнать самый быстрый / эффективный? Я знаю, что POSIX поддерживает ffs()метод в strings.h для поиска первого …


2
Обработка сигналов с несколькими потоками в Linux
Что происходит в Linux, когда программа (которая, возможно, имеет несколько потоков) получает сигнал, например SIGTERM или SIGHUP? Какой поток перехватывает сигнал? Могут ли несколько потоков получать один и тот же сигнал? Есть ли специальный поток, полностью посвященный обработке сигналов? Если нет, что происходит внутри потока, который должен обрабатывать сигнал? Как …
119 c  linux  multithreading  signals  ipc 



6
Инициализация массива символов C
Я не уверен, что будет в массиве char после инициализации следующими способами. 1. char buf[10] = ""; 2. char buf[10] = " "; 3.char buf[10] = "a"; Для случая 2, я думаю, buf[0]должно быть ' ', buf[1]должно быть '\0'и от buf[2]до buf[9]будет случайным содержимым. Для случая 3, я думаю, buf[0]должно …

6
Определить, является ли стандартный ввод терминалом или каналом?
Когда я выполняю " python" из терминала без аргументов, появляется интерактивная оболочка Python. Когда я cat | pythonзапускаю " " с терминала, он не запускает интерактивный режим. Каким-то образом, не получая никаких данных, он обнаружил, что подключен к трубе. Как мне сделать подобное обнаружение в C, C ++ или Qt?
118 c++  c  qt  pipe  stdin 

9
Как далеко могут зайти утечки памяти?
Я много раз сталкивался с утечками памяти. Обычно, когда я ухожу, mallocкак будто завтра не наступит, или болтаюсь, FILE *как грязное белье. Обычно я предполагаю (читай: отчаянно надеюсь), что вся память очищается, по крайней мере, когда программа завершается. Существуют ли ситуации, когда утечка памяти не будет собрана при завершении или …
118 c++  c  memory  memory-leaks 

7
Переопределение NULL
Я пишу код C для системы, где адрес 0x0000 действителен и содержит ввод-вывод порта. Следовательно, любые возможные ошибки, которые обращаются к указателю NULL, останутся необнаруженными и в то же время вызовут опасное поведение. По этой причине я хочу переопределить NULL, чтобы он был другим адресом, например, адресом, который недействителен. Если …
118 c  null 

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