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

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

16
Какова цель блока if (0) в блоке if-else?
Мой вопрос касается строки, которую я упомянул в теме и которую я вижу во многих местах внутри производственного кода. Общий код выглядит так: if (0) { // Empty braces } else if (some_fn_call()) { // actual code } else if (some_other_fn_call()) { // another actual code ... } else { …
142 c  if-statement 

23
Как объяснить указатели C (объявление против унарных операторов) новичку?
Недавно я имел удовольствие объяснять указатели новичку в программировании на C и наткнулся на следующую трудность. Это может показаться не проблемой, если вы уже знаете, как использовать указатели, но постарайтесь внимательно рассмотреть следующий пример: int foo = 1; int *bar = &foo; printf("%p\n", (void *)&foo); printf("%i\n", *bar); Для абсолютного новичка …
142 c  pointers 

7
Каков размер перечисления в C?
Я создаю набор значений перечисления, но мне нужно, чтобы каждое значение перечисления было шириной 64 бита. Если я правильно помню, enum обычно имеет тот же размер, что и int; но я думал, что где-то читал, что (по крайней мере, в GCC) компилятор может сделать перечисление любой ширины, необходимой для хранения …
142 c  enums 



30
Скрытые возможности C
Заблокировано . Этот вопрос и ответы на него заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия. Я знаю, что за всеми реализациями компилятора C стоит стандарт, поэтому скрытых функций быть не должно. Несмотря на это, я уверен, …
141 c  hidden-features 

16
Как реализовать класс на C? [закрыто]
Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав этот пост . Закрыт в прошлом году . Уточните этот вопрос Предполагая, что мне нужно использовать C (без C ++ …
141 c  class  oop  embedded 


9
Почему оператор switch был разработан с учетом необходимости перерыва?
Учитывая простой оператор switch switch (int) { case 1 : { printf("1\n"); break; } case 2 : { printf("2\n"); } case 3 : { printf("3\n"); } } Отсутствие оператора break в случае 2 означает, что выполнение будет продолжено внутри кода для случая 3. Это не случайно; так оно и было …
140 c  language-design 

11
Является ли использование устаревшего компилятора C угрозой безопасности?
У нас в производстве есть несколько систем сборки, о которых никто не заботится, и на этих машинах работают старые версии GCC, такие как GCC 3 или GCC 2. И я не могу уговорить руководство обновить его до более свежего: мол, «если не сломалось, не чини». Поскольку мы поддерживаем очень старую …
140 c  security  gcc 

2
Как открывать, читать и писать из последовательного порта в C?
Я немного запутался в чтении и записи в последовательный порт. У меня есть USB-устройство в Linux, которое использует драйвер конвертера последовательного USB-устройства FTDI. Когда я подключаю его, он создает: / dev / ttyUSB1. Я думал, что будет просто открыть и читать / писать из него на C. Я знаю скорость …
140 c  linux  serial-port 

5
Написание программ для устранения ошибок ввода-вывода, вызывающих потерю записи в Linux
TL; DR: Если ядро ​​Linux теряет буферизованную запись ввода-вывода , есть ли способ для приложения узнать? Я знаю, что вам нужен fsync()файл (и его родительский каталог) для долговечности . Вопрос в том, теряет ли ядро ​​грязные буферы, ожидающие записи, из-за ошибки ввода-вывода, как приложение может обнаружить это и восстановить или …
139 c  linux  linux-kernel  posix 

3
Как скомпилировать статическую библиотеку в Linux?
У меня есть вопрос: как скомпилировать статическую библиотеку в Linux gcc, т.е. мне нужно скомпилировать мой исходный код в файл с именем out.a. Достаточно ли просто скомпилировать команду gcc -o out.a out.c? Я не совсем знаком gcc, надеюсь, кто-нибудь может мне помочь.
138 c  gcc  static-libraries 

12
Самые сложные / полезные команды для отладчика gdb [закрыто]
В его нынешнем виде этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, потребует дебатов, аргументов, опросов или расширенного обсуждения. Если вы считаете, что этот вопрос можно улучшить и, возможно, снова открыть, обратитесь за …
138 c  unix  gdb  debugging  dbx 

2
Почему начальное выделение C ++ намного больше, чем C?
При использовании того же кода простая замена компилятора (с компилятора C на компилятор C ++) изменит объем выделяемой памяти. Я не совсем уверен, почему это так, и хотел бы понять это больше. Пока что лучший ответ, который я получил, - это «вероятно, потоки ввода-вывода», который не очень информативен и заставляет …
138 c++  c  benchmarking 

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