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

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

7
Запятая в макросе C / C ++
Скажем, у нас есть такой макрос #define FOO(type,name) type name Что мы могли бы использовать как FOO(int, int_var); Но не всегда так просто: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 Конечно, мы могли: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK что не …
104 c++  c  macros  c-preprocessor 

13
Почему размер параметра массива не такой же, как у основного?
Почему размер массива, отправляемого в качестве параметра, не такой же, как в main? #include <stdio.h> void PrintSize(int p_someArray[10]); int main () { int myArray[10]; printf("%d\n", sizeof(myArray)); /* As expected, 40 */ PrintSize(myArray);/* Prints 4, not 40 */ } void PrintSize(int p_someArray[10]){ printf("%d\n", sizeof(p_someArray)); }
104 c  arrays  function  sizeof 

2
Могу ли я вызвать memcpy () и memmove () с нулевым «количеством байтов»?
Нужно ли мне случаи лечат , когда я actully не имею ничего перемещать / копировать с memmove()/ memcpy()в крайних случаях int numberOfBytes = ... if( numberOfBytes != 0 ) { memmove( dest, source, numberOfBytes ); } или мне просто вызвать функцию без проверки int numberOfBytes = ... memmove( dest, source, …
104 c++  c  pointers  memcpy  memmove 

2
GCC -g vs -g3 Флаг GDB: в чем разница?
При компиляции исходного кода C с помощью gcc или Clang я всегда использую этот -gфлаг для генерации отладочной информации для gdb. gcc -g -o helloworld helloworld.c Я заметил, что некоторые рекомендуют -g3вместо этого. В чем разница между -gи -g3флагами? Также есть разница между -gи -ggdb?
104 c  debugging  gcc  gdb  clang 

7
Печать шестнадцатеричных символов в C
Я пытаюсь прочитать строку символов, а затем распечатать шестнадцатеричный эквивалент символов. Например, если у меня есть строка "0xc0 0xc0 abc123", в которой первые 2 символа находятся c0в шестнадцатеричном abc123формате, а остальные символы - в ASCII, тогда я должен получить c0 c0 61 62 63 31 32 33 Однако printfиспользование %xдает …
104 c  hex  printf 

6
Программирование на C в Visual Studio
Могу ли я использовать Visual Studio для изучения программирования на C? В меню нового проекта я могу выбирать между Visual Basic, Visual C #, Visual C ++, Visual F # и другими, но я не вижу «C» или «Visual C».
104 c  visual-studio 


4
Почему все используют стандартные типы C?
Если вы хотите использовать Qt , вы должны принять quint8, quint16и так далее. Если вы хотите использовать GLib , вы должны приветствовать guint8, guint16и так далее. В Linux есть u32, s16и так далее. УНЦ / OS определяет SINT32, UINT16и так далее. И если вам нужно использовать какую-то комбинацию этих вещей, …
103 c++  c  stdint 

12
Почему символьные литералы C представляют собой целые числа вместо символов?
В C ++ sizeof('a') == sizeof(char) == 1. Это имеет интуитивный смысл, поскольку 'a'является символьным литералом и sizeof(char) == 1определено стандартом. В C однако sizeof('a') == sizeof(int). То есть, похоже, что символьные литералы C на самом деле являются целыми числами. Кто-нибудь знает почему? Я могу найти множество упоминаний об этой …
103 c++  c  char  sizeof 

7
Сделайте программу работать медленно
Есть ли способ запустить программу на C ++ медленнее, изменив какие-либо параметры ОС в Linux? Таким образом, я хотел бы смоделировать, что произойдет, если эта конкретная программа будет работать на действительно более медленной машине. Другими словами, более быстрая машина должна вести себя как более медленная машина для этой конкретной программы.
103 c++  c  linux  unix  ubuntu 

8
Спецификатор ширины Printf для поддержания точности значения с плавающей запятой
Есть ли printfспецификатор ширины, который можно применить к спецификатору с плавающей запятой, который автоматически форматировал бы вывод до необходимого количества значащих цифр , чтобы при сканировании строки обратно было получено исходное значение с плавающей запятой? Например, предположим, что я печатаю floatс точностью до 2десятичных знаков: float foobar = 0.9375; printf("%.2f", …

13
Попробуйте операторы catch на C
Сегодня я думал о блоках try / catch, существующих в других языках. Некоторое время гуглил, но безрезультатно. Насколько я знаю, в C. нет такой вещи, как try / catch. Однако есть ли способ их «смоделировать»? Конечно, есть assert и другие уловки, но ничего вроде try / catch, которые также перехватывают …
103 c 

4
Использование библиотеки C ++ в коде C
У меня есть библиотека C ++, которая предоставляет различные классы для управления данными. У меня есть исходный код библиотеки. Я хочу расширить API C ++ для поддержки вызовов функций C, чтобы библиотеку можно было использовать с кодом C и кодом C ++ одновременно. Я использую цепочку инструментов GNU (gcc, glibc …
103 c++  c  gcc  glibc 

4
Что означает -D_XOPEN_SOURCE?
Недавно я столкнулся с кодом, который gcc не мог бы компилировать без этого аргумента. Я проверил страницу руководства gcc, но не нашел этой конкретной опции. Я нашел XOPEN_SOURCE, но было мало объяснений того, что он делает. Кто-нибудь может уточнить? Я знаю , -D_XOPEN_SOURCEможно установить разные значения, например 400, 600, но …
103 c  gcc 

7
Как рассчитывается контрольная сумма CRC32?
Возможно, я просто не вижу этого, но CRC32 кажется либо излишне сложным, либо недостаточно объясненным в любом месте, которое я мог найти в Интернете. Я понимаю, что это остаток от арифметического деления значения сообщения, не основанного на переносе, деленный на полином (генератора), но его реальная реализация ускользает от меня. Я …
103 c  checksum  crc32 

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