c- все статьи тега ➜ страница 15


Почему strncpy не завершается null?

strncpy() якобы защищает от переполнения буфера. Но если он предотвращает переполнение без завершения null, то, скорее всего, последующая строковая операция будет переполняться. Поэтому, чтобы защитить себя от этого, я делаю: strncpy( dest, src, LEN ); dest[LEN - 1] = ''; man strncpy выдает: функция strncpy () аналогична, за исключением того, что копируется не более n байт src. Таким образом, если нет нулевого байта среди первых n байтов src, результат не будет нуль-завершается. без ну ...

Почему вы используете 'extern" C++"?

в этой статьи за ключевым словом extern может следовать "C"или" C++". Почему вы используете 'extern" C++"? Это практично? ...

Реализация префиксного дерева [закрыт]

есть ли какие - либо скоростные и кэш-эффективные реализации trie в C/C++? Я знаю, что такое trie, но я не хочу изобретать велосипед, реализуя его сам. ...

Размер типа int зависит от компилятора и/или процессор?

будет ли размер целого числа зависеть от компилятора, ОС и процессора? ...

Статическое утверждение в C

каков наилучший способ достижения времени компиляции статических утверждений в C (не C++), с особым акцентом на GCC? ...

srand () - почему вы звоните только один раз?

этот вопрос касается комментария в этом вопросе рекомендуемый способ инициализации srand? первый комментарий говорит, что srand() должен вызываться только один раз в приложении. Почему это так? ...

dup2 / dup - зачем мне нужно дублировать файловый дескриптор?

Я пытаюсь понять использование dup2 и dup. С главной страницы: DESCRIPTION dup and dup2 create a copy of the file descriptor oldfd. After successful return of dup or dup2, the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file position is modified by using lseek on one of the descriptors, the position is also changed for the other. The two descriptors do not share the close-on-exec flag, however. dup uses the lo ...

Разница между CC, gcc и g++?

в чем разница между 3 компиляторами CC, gcc, g++ при компиляции C и C++ код в плане сборки генерация кода, библиотеки, языковые особенности и т. д.? ...

": "(двоеточие) в структуре C - что это значит? [дубликат]

этот вопрос уже есть ответ здесь: что означает синтаксис структуры C++ "a: b" 5 ответов struct _USBCHECK_FLAGS { unsigned char DEVICE_DEFAULT_STATE : 1; unsigned char DEVICE_ADDRESS_STATE : 1; unsigned char DEVICE_CONFIGURATION_STATE : 1; unsigned char DEVICE_INTERFACE_STATE : 1; unsigned char FOUR_RESERVED_BITS : 8; un ...

Попытка понять опцию gcc-fomit-frame-pointer

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

Вызов функции C из кода C++

У меня есть функция C, которую я хотел бы вызвать из C++. Я не мог использовать "extern "C" void foo() " вид подхода, потому что функция C не удалось скомпилировать с помощью g++. Но он прекрасно компилируется с помощью gcc. Любые идеи, как вызвать функцию из C++? ...

Mmap () весь большой файл

Я пытаюсь "mmap" двоичный файл (~8 ГБ), используя следующий код (тест.с.) #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <sys/mman.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define handle_error(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0) int main(int argc, char *argv[]) { const char *memblock; int fd; struct stat sb; fd = open(argv[1], O_RDONLY); fstat(fd, &sb); printf ...

Что Означает Это Предупреждение Valgrind? - предупреждение установить диапазон адресов завивки

когда я запускал свою программу против valgrind, я столкнулся со следующим предупреждением. Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined) Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess) Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess) после некоторого googling я нашел в здесь что это Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions, что мне ма ...

В чем разница между заголовочным файлом и библиотекой?

одна из вещей, которую мне трудно понять, - это то, как работает компилятор. У меня с этим много трудностей, но в частности я продолжаю путать заголовки и библиотеки. Если бы кто-нибудь мог немного прояснить ситуацию, это было бы здорово. ...

часы gettime альтернатива в Mac OS X

при компиляции программы, которую я написал на Mac OS X после установки необходимых библиотек через MacPorts, я получаю эту ошибку: In function 'nanotime': error: 'CLOCK_REALTIME' undeclared (first use in this function) error: (Each undeclared identifier is reported only once error: for each function it appears in.) получается, что clock_gettime не реализован в Mac OS X. Есть ли альтернативные средства получения эпоха времени на наносекунд? К сожалению gettimeofday находится в микросекунд. ...

Почему я получаю ошибку утверждения c malloc?

я реализую полиномиальный алгоритм разделения и завоевания, поэтому я могу сравнить его с реализацией OpenCL, но я не могу получить malloc на работу. Когда я запускаю программу, она выделяет кучу вещей, проверяет некоторые вещи, а затем отправляет size/2 алгоритму. Затем, когда я ударил malloc строка снова выплевывает это: Танос.c: 3096: sYSMALLOc: Assertion `(old_top = = ((mbinptr) (((char *) &((av) - >bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, ФД)))) && ...

Как получить MAC-адрес вашего компьютера с помощью программы C?

Я работаю на Ubuntu. Как я могу получить MAC-адрес моей машины или интерфейс, скажем, eth0 с помощью программы C. ...

Как написать цикл while с препроцессором C?

Я задаю этот вопрос с образовательной / хакерской точки зрения (я бы не очень хотел кодировать так). возможно ли реализовать цикл while только с помощью C директивы препроцессора. Я понимаю, что макросы не могут быть расширены рекурсивно, так как это будет сделано? ...

Объявление переменной после метки goto

сегодня я нашел одну интересную вещь. Я не знал, что нельзя объявить переменную после метки goto. компиляция следующего кода #include <stdio.h> int main() { int x = 5; goto JUMP; printf("x is : %dn",x); JUMP: int a = 0; <=== giving me all sorts of error.. printf("%d",a); } выдает ошибки типа temp.c: In function ‘main’: temp.c:7: error: expected expression before ‘int’ temp.c:8: error: ‘a’ undeclared (first use in this function) temp.c:8: error: (Each undeclar ...

Разница между тип uint8 т т и uint uint с fast8 least8 Т

стандарт C99 вводит следующие типы данных. Документацию можно найти здесь для библиотеки AVR stdint. uint8_t означает, что это 8-битный беззнаковый тип. uint_fast8_t означает, что это самый быстрый unsigned int с по крайней мере 8 биты. uint_least8_t означает, что это беззнаковый int с не менее чем 8 битами. Я понимаю uint8_t и что такое uint_fast8_t( Я не знаю, как это реализовано в уровень регистра). 1.Можете ли вы объяснить, что означает "это unsigned int по крайней мере 8 бит"? 2.Ка ...