Ответы пользователя по тегу C
  • Как в языке С: 1) реализуется понятие "inline" функция? 2) возможно ли реализовать общее имя функции для разных типов?

    @MaM
    Хах, а ты веселый малый. Вообшем случае inline это совет компилятору заинлайнить функцию, так же есть штуки специфичные к примеру для гцц или кланга которые требуют сделать это. Но так как люди эти часто злоупотребляли компилятор иногда игнорирует требования программиста. Лучше использовать специальные макросы типа "горячий код" или наоборо "холодный" в спецификации они есть. Касательно реализации шаблонов на языке си, попробуй прямо погуглить templates in c. Техника стара как мир. Вообшем случае такой метод обеспечения полиморфизама конечно используют, но все же лучше использовать какой нибудь void и максимально отказаться от обобшенного кода на си. Большинство прикладных задач покрываются штуками вроде глиба, причем там часто используются макросы с специфичной идиомой примером может служить glib vector
    Ответ написан
  • Как создать свой тип данных в языке Си?

    @MaM
    Стандартный механизм определения нового тип в языке C, struct some{ ... }, union some{ ... }, enum some {...}. Подробней лучше почитать в стандарте или на https://en.cppreference.com/. Так же объявление типа указатель на объект типа type - type* type_name; или указатель, на указатель объекта типа type - type*** type_name; и т.д. , указатель на функцию void(func*)(int, int), массив объектов тип type some[num], (как с массивами так и с указателями возможны различные измерения типа массив массивов т.е. двумерный) однако с указателями на функции, а в обшем и преобразовании имени к указателю и преобразованию массивов к указателям и тд следует относится внимательно. Вообшем случае такие тонкости уже уровень для серьезного написания дров или осей, так что советую запастись стандартом так же система типов серьезно отличается от таковой в с++ (просто заранее предупреждаю). Так же, typedef struct {...} some полезная идеома языка си для создания алиса типа на анонимную структуру ( да есть анонимные структуры и другие типы данных), часто полезны в сочетании с расшерением гцц для вложенных функций для использования в scope in place. Для более глубокого понимания еше могут быть полезны битовые поля, часто в месте с выравниванием используюся для каламбуров типизации в сериализаторах и реализации псевдонаследования, каноническим примером могут служить сокеты беркли. Забыл упомянуть некоторые модификаторы типов такие как long long и тд тоже по сути используют зарезервированный фундаментальный тип https://stackoverflow.com/questions/35401017/is-lo... .
    Ответ написан
    Комментировать