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 ответов

18 просмотров

Посмотри _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
Её нет, но сишникам так хочется её, что они готовы...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта