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

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

4
Что особенного в структурах?
Я знаю, что в C мы не можем вернуть массив из функции, а только указатель на массив. Но я хочу знать, в чем особенность, structsкоторая делает их возвращаемыми функциями, даже если они могут содержать массивы. Почему structупаковка делает действующей следующую программу? #include <stdio.h> struct data { char buf[256]; }; struct …

4
Потоки и сигналы POSIX
Я пытался понять тонкости взаимодействия потоков POSIX и сигналов POSIX. В частности, меня интересуют: Как лучше всего контролировать, в какой поток доставляется сигнал (при условии, что это не фатально)? Как лучше всего сообщить другому потоку (который действительно может быть занят), что сигнал прибыл? (Я уже знаю, что использовать переменные условия …
81 c  pthreads  signals 

5
Каковы лучшие (портативные) кроссплатформенные математические библиотеки произвольной точности? [закрыто]
Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow. Закрыт 5 лет назад . Уточните этот вопрос Я ищу хорошую математическую библиотеку произвольной точности на C или C ++. Не …
81 c++  c  biginteger  bigdecimal  gmp 

3
Почему панель GCC работает с NOP?
Я работал с C некоторое время и совсем недавно начал разбираться в ASM. Когда я компилирую программу: int main(void) { int a = 0; a += 1; return 0; } В дизассемблере objdump есть код, но после ret нет: ... 08048394 <main>: 8048394: 55 push %ebp 8048395: 89 e5 mov …
81 c  gcc  assembly 

9
Можно ли изменить строку символа в C?
В течение нескольких часов я боролся со всевозможными учебниками по C и книгами, связанными с указателями, но что я действительно хочу знать, так это то, можно ли изменить указатель char после его создания. Вот что я пробовал: char *a = "This is a string"; char *b = "new string"; a[2] …
81 c  string  debugging 

4
Макросы многострочного препроцессора
Как сделать макрос многострочного препроцессора? Я умею составлять одну строчку: #define sqr(X) (X*X) но мне нужно что-то вроде этого: #define someMacro(X) class X : public otherClass { int foo; void doFoo(); }; Как я могу заставить это работать? Это только пример, настоящий макрос может быть очень длинным.
81 c++  c  c-preprocessor 

12
Как избежать нажатия Enter с помощью getchar () для чтения только одного символа?
В следующем коде: #include <stdio.h> int main(void) { int c; while ((c=getchar())!= EOF) putchar(c); return 0; } Мне нужно нажать, Enterчтобы напечатать все буквы, которые я ввел getchar, но я не хочу этого делать, я хочу нажать на букву и сразу увидеть введенную мной букву, повторяющуюся без нажатия Enter. Например, …

4
Безопасно ли выполнять memcpy (0,0,0)?
Я не так хорошо разбираюсь в стандарте C, поэтому, пожалуйста, потерпите меня. Я хотел бы знать, гарантируется ли это по стандарту, что memcpy(0,0,0)это безопасно. Единственное ограничение, которое я смог найти, это то, что если области памяти перекрываются, то поведение не определено ... Но можно ли считать, что области памяти здесь …

7
Почему strlcpy и strlcat считаются небезопасными?
Я понимаю это strlcpyи strlcatбыли разработаны как безопасная замена для strncpyи strncat. Однако некоторые люди по-прежнему считают, что они небезопасны, и просто вызывают проблемы другого типа . Может ли кто-нибудь привести пример того, как использование strlcpyили strlcat(то есть функция, которая всегда завершает свои строки нулевым значением) может привести к проблемам …
80 c  security  strncpy  strlcpy 

7
Должны ли мы использовать exit () в C?
Есть вопрос об использовании exitв C ++. В ответе обсуждается, что это не очень хорошая идея в основном из-за RAII, например, если exitвызывается где-то в коде, деструкторы объектов не будут вызываться, следовательно, если, например, деструктор был предназначен для записи данных в файл, этого не произойдет , потому что деструктор не …
80 c 

6
Вывести адрес или указатель на значение в C
Я хочу сделать что-то довольно простое. Я получаю результаты, но проблема в том, что у меня нет возможности узнать, верны ли результаты. Я работаю на C, и у меня есть два указателя; Я хочу распечатать содержимое указателя. Я не хочу разыменовать указатель, чтобы получить указанное значение, мне просто нужен адрес, …

2
Пытаемся понять параметр gcc -fomit-frame-pointer
Я попросил Google дать мне значение gccпараметра -fomit-frame-pointer, который перенаправляет меня к приведенному ниже утверждению. -fomit-frame-pointer Не храните указатель фрейма в регистре для функций, которым он не нужен. Это позволяет избежать инструкций по сохранению, настройке и восстановлению указателей кадров; он также делает дополнительный регистр доступным для многих функций. Это также …


16
Примеры хороших gotos на C или C ++ [закрыто]
Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Закрыт 6 лет назад . Заблокировано . Этот вопрос и ответы на него заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия. …
79 c++  c  goto 

7
Почему тернарный оператор используется для определения 1 и 0 в макросе?
Я использую SDK для встроенного проекта. В этом исходном коде я нашел код, который, по крайней мере, мне показался странным. Во многих местах в SDK есть исходный код в таком формате: #define ATCI_IS_LOWER( alpha_char ) ( ( (alpha_char >= ATCI_char_a) && (alpha_char <= ATCI_char_z) ) ? 1 : 0 ) …

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