c- все статьи тега ➜ страница 18
Есть ли площадки, где указатели на разные типы имеют разные размеры?
стандарт C позволяет указателям на разные типы иметь разные размеры, например sizeof(char*) != sizeof(int*) разрешено. Однако для этого требуется, чтобы указатель был преобразован в void* а затем преобразуется обратно в исходный тип, он должен сравнить как равный своему исходному значению. Поэтому логически следует, что sizeof(void*) >= sizeof(T*) для всех типов T, верно? на наиболее распространенных платформах, используемых сегодня (x86, PPC, ARM и 64-разрядные варианты и т. д.), размер в ...
Есть ли эквивалент максимального пути WinAPI под linux / unix?
Если я хочу выделить массив символов (в C), который гарантированно будет достаточно большим, чтобы содержать любой допустимый абсолютный путь+имя файла, насколько он должен быть большим. на Win32 есть определение MAX_PATH. Что такое эквивалент для Unix / linux? ...
Эффект использования запятой вместо точки с запятой в C и c++
Я заметил в ряде случаев при рефакторинге различных частей кода C и C++, что для разделения операторов используется запятая, а не точка с запятой. Что-то вроде этого; int a = 0, b = 0; a = 5, b = 5; где бы я ожидал int a = 0, b = 0; a = 5; b = 5; Я знаю, что C и C++ позволяют использовать запятые для разделения операторов (особенно заголовков циклов), но в чем разница между этими двумя частями кода? Я предполагаю, что запятая была оставлена в результате разреза & вставка, но это оши ...
Устанавливает ли free () errno?
если buf это malloc() выделенный буфер типа char, делает free(buf) set / reset errno? допустим я хочу записать буфер в файл, а затем освободить его, как я не нужна. предположим, что политика ошибок для кода должна возвращать -1 при ошибке. это правильный способ записать буфер и проверить ошибку без утечки памяти? fputs(buf, somefile); free(buf); if (errno) return -1; или мне нужно рассмотреть возможность свободной установки errno, как в... fputs(buf, somefile); if (errno){ free(buf) ...
Определение порядка следования байтов во время компиляции
есть ли безопасный, портативный способ определить (во время компиляции) endianness платформы, на которой компилируется моя программа? Я пишу в с. [редактирование] Спасибо за ответы, я решил придерживаться решения времени выполнения! ...
Разница между int main () и int main (void)?
что означает следующее: int main(void) {...} VS int main() {...} ? думаю, что int main() {...} означает, что main не получает никаких параметров (из командной строки), однако: int main(int argc, char *argv[]) делает. но что значит int main(void) {...} означает ? что значит пустота расшифровывается ? Я посмотрел здесь, но это как-то другой вопрос . ...
Как определить, выполняется ли текущий процесс GDB?
стандартный способ будет следующим: if (ptrace(PTRACE_TRACEME, 0, NULL, 0) == -1) printf("traced!n"); в этом случае ptrace возвращает ошибку, если текущий процесс отслеживается (т. е. выполняется с gdb или присоединяется к нему). но есть серьезная проблема с этим: если вызов возвращается успешно, gdb не может подключиться к нему позже. Что является проблемой, так как я не пытаюсь реализовать анти-отладочные вещи. Моя цель состоит в том, чтобы испустить "int 3", Когда выполняется contitio ...
Вывод сборки GCC пустой программы на x86, win32
я пишу пустые программы, чтобы раздражать ад из кодеров stackoverflow, нет. Я просто изучаю инструментальную цепочку gnu. теперь следующее Может быть слишком глубоким для меня, но для продолжения пустой программы saga я начал изучать вывод компилятора C, материал GNU as потребляет. gcc version 4.4.0 (TDM-1 mingw32) ЦУС -Ы.c .file "test.c" .def ___main; .scl 2; .type 32; .endef .text .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl ...
func () vs func (void) в c99
void func() На практике пустой параметр означает, что принимается любой аргумент. void func(void) принимает никаких аргументов. но в стандартном C99, я нахожу такие строки: 6.7.5.3 деклараторы функций (включая прототипы) 14 список идентификаторов объявляет только идентификаторы параметров функции. пустой список в деклараторе функции, который является частью определения этой функции указывает, что функция не имеет параметров. пустой список в деклараторе функции, который не является частью ...
Обязательно ли экранировать символы табулятора в C и c++?
в C и C++ (и нескольких других языках) горизонтальные табуляторы (код ASCII 9) в символьных и строковых константах обозначаются в экранированной форме как 't' и "t". Однако, я регулярно вводить неэкранированных символов табуляции в строковые литералы как, например,"A B" (в betreen есть вкладка A и B), и по крайней мере clang++, похоже, не беспокоит - строка, похоже, эквивалентна "AtB". Мне нравится unescaped версия лучше, так как долго отступал многострочные строки лучше читаются в исходном к ...
Объектно-ориентированное программирование на C [дубликат]
Возможные Дубликаты:можете ли вы написать объектно-ориентированный код на C?объектно-ориентированный шаблон в C ? Я помню, как читал некоторое время назад о ком-то (я думаю, что это был Линус Торвальдс), говорящий о том, как C++ - ужасный язык и как вы можете писать объектно-ориентированные программы с C. После того, как у меня было время подумать, я действительно не вижу, как все объектно-ориентированные концепции переносятся в C. Некоторые вещи довольно очевидный. Например: эмулиров ...
Фатальная ошибка GCC: stdio.ч: нет такого файла или каталога
Я пытаюсь скомпилировать программу в C на OS X 10.9 с GCC 4.9 (экспериментально). По какой-то причине, я получаю следующую ошибку во время компиляции: gcc: fatal error: stdio.h: No such file or directory затем я попробовал простую программу Hello World: #include <stdio.h> int main(int argc, const char *argv[]) { printf("Hello, world!"); return 0; } опять же, при запуске gcc -o ~/hello ~/hello.c, Я получил ту же ошибку. Я использую экспериментальную версию gcc, но кажется мал ...
Когда uint8 t ≠ unsigned char?
согласно C и C++,CHAR_BIT >= 8. Но всякий раз CHAR_BIT > 8,uint8_t даже не может быть представлено в виде 8 бит. Он должен быть больше, потому что CHAR_BIT - минимальное количество битов для любого типа данных в системе. на какой системе можно uint8_t юридически определяется как тип, отличный от unsigned char? (если ответ отличается для C и C++, то я хотел бы знать оба.) ...
Технически, как работают вариативные функции? Как работает printf?
Я знаю, что могу использовать va_arg чтобы написать свои собственные вариационные функции, но как вариационные функции работают под капотом, т. е. на уровне инструкции по сборке? например, как это возможно, что printf принимает переменное число аргументов? * Нет правила без исключения. Нет языка C / C++, однако на этот вопрос можно ответить для них обоих * Примечание: ответ первоначально дан как может функция printf может принимать переменные параметры в количестве при выводе их?, но, пох ...
Почему Swift в 100 раз медленнее, чем C в этом тесте обработки изображений? [дубликат]
этот вопрос уже есть ответ здесь: Быстродействие бета-версии Swift: сортировка массивов 8 ответов как и многие другие разработчики, я был очень взволнован новым языком Swift от Apple. Apple заявила, что ее скорость быстрее, чем Objective C, и может быть использована для записи операционной системы. И из того, что я узнал так далеко, это статический типизированный язык и способный точно контролировать точ ...
Как и когда выровнять размер строки кэша?
в отличной ограниченной очереди mpmc Дмитрия Вьюкова, написанной на C++ Смотрите: http://www.1024cores.net/home/lock-free-algorithms/queues/bounded-mpmc-queue Он добавляет некоторые переменные обивка. Я предполагаю, что это должно выровнять его по линии кэша для производительности. у меня есть несколько вопросов. почему это делается таким образом? это портативный метод, который будет всегда работают в каких случаях это лучше всего использовать __attribute__ ((aligned (64))) вместо. п ...
"Плохие" функции C против их" хороших " альтернатив
каковы "плохие" функции в C, и каковы их "хорошие" альтернативы? Почему плохие плохие, и что делает хороших людей лучше? Я знаю, например, gets() "плохо", потому что он не имеет никакой формы проверки границ. Какова его лучшая альтернатива? fgets()? Я слышал scanf() - это плохо, но я не могу вспомнить, почему. Кто-нибудь знает? Какая самая лучшая альтернатива? есть еще? ...
Вызов функции c из Java
Как вызвать функцию c из Java. Кажется, c основан на компиляторе. Я хотел бы вызвать функцию C в Windows из Java, и Функция GCC fron Java тоже. любая ссылка? ...
Арифметика указателя [закрыто]
есть ли у кого-нибудь хорошие статьи или объяснения (блоги, примеры) для арифметики указателей? Представьте, что аудитория-это кучка Java-программистов, изучающих C и c++. ...
Что означает ключевое слово extern?
Что значит extern значит ключевое слово? Я видел, что перед объявлением функции, как extern void DoFoo ... ...