170 похожих чатов

Парни, нужно в Си реализовать перегрузку функции. Я понимаю, что

в Си нет такого понятия, но, вроде как, это можно сделать с помощью макросов\функций с переменным числом аргументов. У меня есть функция int attach_object(int* reg, int* id) мне нужно добавить функцию int attach_object(int* reg, int* id, const char* name) Поскольку я не могу использовать перегрузку функций и параметры по умолчанию в Си, то нужно как-то извратиться типа использовать функцию с переменным числом аргументов int attach_object(int* reg, int* id, ...)Но как мне узнать внутри, что пользователь передал туда еще и имя объекта?

19 ответов

13 просмотров

Посмотри _Generic

Посмотри как в курле реализована перегрузка

Sergey-Dubovik Автор вопроса
Kirill Bolshakov
Посмотри как в курле реализована перегрузка

А можно название функции в курле? А то листаю гитхаб с исходниками курла и пока не могу найти

🐈
а что там перегружено? 0_o

Эта функция и перегружена

Sergey-Dubovik Автор вопроса
Kirill Bolshakov
curl_easy_setopt как то так

curl_easy_setopt ? Там просто, вроде, функция с переменным число аргументов

Sergey Dubovik
curl_easy_setopt ? Там просто, вроде, функция с пе...

Ну дак через это и делается там перегрузка

Sergey-Dubovik Автор вопроса
Kirill Bolshakov
Ну дак через это и делается там перегрузка

В нее передается option, который парсится и в зависимости от этого узнается число аргументов. У меня нет такой возможности

Kirill Bolshakov
Ну дак через это и делается там перегрузка

это не перегрузка. это функция с переменным числом аргументов.

Sergey Dubovik
В нее передается option, который парсится и в зави...

Эта штука? https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B0

🐈
это не перегрузка. это функция с переменным числом...

Другими словами перегрузка. Функция, которая имеет одно и тоже название, но имеет разные возвращаемые значения, аргументы является перегрузкой функции

Sergey Dubovik
В нее передается option, который парсится и в зави...

Тогда есть ещё какая то всратость - https://en.cppreference.com/w/c/language/generic Больше костылей не знаю, выкинь С - юзай С++

Kirill Bolshakov
Ну дак что ты ещё от Си ожидал?

я ожидал от С++-программистов, что они не будут путать вариативные функции с перегрузкой функций. от Си я не ожидаю перегрузки функций, так как её там нет.

🐈
я ожидал от С++-программистов, что они не будут пу...

Её нет, но сишникам так хочется её, что они готовы костылями её эмулировать

Sergey-Dubovik Автор вопроса
Kirill Bolshakov
Тогда есть ещё какая то всратость - https://en.cpp...

Я нашел еще вот такое: http://locklessinc.com/articles/overloading/ - но что то не могу никак прикрутить то что тут есть, к моей задаче. С удовольствием выкинул бы Си и юзал С++, но это по работе надо, а там нет пока такой возможности.

Kirill Bolshakov
Её нет, но сишникам так хочется её, что они готовы...

хрен его знает. я хоть и си-шник по большей части, но такой хернёй почему-то не страдаю

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта