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

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

13
Как вырваться из вложенных циклов?
Если я использую breakоператор, он нарушит только внутренний цикл, и мне нужно использовать какой-то флаг, чтобы разорвать внешний цикл. Но если много вложенных циклов, код будет выглядеть плохо. Есть ли другой способ разорвать все петли? (Пожалуйста, не используйте goto stmt.) for(int i = 0; i < 1000; i++) { for(int …
96 c  nested-loops  break 

8
Несколько аргументов функции, вызываемой pthread_create ()?
Мне нужно передать несколько аргументов функции, которую я хотел бы вызвать в отдельном потоке. Я читал, что типичный способ сделать это - определить структуру, передать функции указатель на нее и разыменовать ее для аргументов. Однако я не могу заставить это работать: #include <stdio.h> #include <pthread.h> struct arg_struct { int arg1; …
96 c  pthreads 


16
Лучшие практики для операций кругового сдвига (поворота) в C ++
Операторы сдвига влево и вправо (<< и >>) уже доступны в C ++. Однако я не мог понять, как я могу выполнять операции кругового сдвига или поворота. Как можно выполнять такие операции, как «Повернуть влево» и «Повернуть вправо»? Здесь дважды вращается вправо Initial --> 1000 0011 0100 0010 должен привести …

6
Оператор тильды в C
Я видел оператор тильды, используемый в алгоритме хеширования ELF, и мне любопытно, что он делает. (Код взят из Eternal Confused .) unsigned elf_hash ( void *key, int len ) { unsigned char *p = key; unsigned h = 0, g; int i; for ( i = 0; i < len; …
96 c++  c  operators 

3
Что такое «топор памяти»?
Я только что наткнулся на это сообщение в блоге, в котором упоминается «топание памяти»: программа на C ++, которая легко может топтать память (о чем вы, вероятно, даже не слышали, если родились в мире управляемого кода). И вообще никогда не слышал об этом! Итак, что это, топчание памяти, топчание памяти? …

5
Как увеличить адрес указателя и значение указателя?
Допустим, int *p; int a = 100; p = &a; Что на самом деле будет делать следующий код и как? p++; ++p; ++*p; ++(*p); ++*(p); *p++; (*p)++; *(p)++; *++p; *(++p); Я знаю, что это немного запутанно с точки зрения кодирования, но я хочу знать, что на самом деле произойдет, когда …
96 c  pointers 


13
Как я могу использовать sizeof в макросе препроцессора?
Есть ли способ использовать a sizeofв макросе препроцессора? Например, за эти годы было множество ситуаций, в которых я хотел сделать что-то вроде: #if sizeof(someThing) != PAGE_SIZE #error Data structure doesn't match page size #endif То, что я здесь проверяю, полностью выдумано - дело в том, что я часто люблю вставлять …
95 c  gcc 

3
Как я могу создать Makefile для проектов C с подкаталогами SRC, OBJ и BIN?
Несколько месяцев назад я придумал следующий универсальный вариант Makefileшкольных заданий: # ------------------------------------------------ # Generic Makefile # # Author: yanick.rochon@gmail.com # Date : 2010-11-05 # # Changelog : # 0.01 - first version # ------------------------------------------------ # project name (generate executable with this name) TARGET = projectname CC = gcc -std=c99 -c …
95 c  makefile 


7
Как настроить задание cron для запуска исполняемого файла каждый час?
Мне нужно настроить задание cron, которое запускает исполняемый файл, скомпилированный с использованием gcc, один раз в час. Я вошел в систему как root и набрал crontab -e Затем я ввел следующее и сохранил файл. 0 * * * * /path_to_executable Однако работа cron не работает. Я вижу, что когда я …
95 c  linux  gcc  cron  crontab 

13
Размещение звездочки в объявлениях указателей
Недавно я решил, что мне просто нужно наконец выучить C / C ++, и есть одна вещь, которую я действительно не понимаю в указателях или, точнее, в их определении. Как насчет этих примеров: int* test; int *test; int * test; int* test,test2; int *test,test2; int * test,test2; Теперь, насколько я …
95 c++  c  pointers  declaration 

7
Идентификатор uint32_t не найден, ошибка
Я портирую код с Linux C на Visual C ++ для Windows. Visual C ++ не знает, #include <stdint.h>поэтому я закомментировал это. Позже я обнаружил много таких 'uint32_t': identifier not foundошибок. Как это решить?
95 c++  c  visual-c++ 

15
Допустимое использование goto для управления ошибками в C?
Этот вопрос на самом деле является результатом интересного обсуждения на сайте programming.reddit.com некоторое время назад. В основном это сводится к следующему коду: int foo(int bar) { int return_value = 0; if (!do_something( bar )) { goto error_1; } if (!init_stuff( bar )) { goto error_2; } if (!prepare_stuff( bar )) …

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