powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в C из структуры вызывать функцию не задавая аргумент структуры?
13 сообщений из 13, страница 1 из 1
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38096533
Фотография sergei123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
typedef struct person {
	.
	.
	.
}Person;

typedef struct persons {
	int sizeOfArray;
	Person* personsArray;
	void (*add)(Person newPersontoAdd, Persons* personsArray);
}Persons;

void add(Person newPersontoAdd, Persons* personsArray) {
	add new person to persons array...
}

Persons persons;



Теперь как можно вызывать функцию таким образом persons.add(newPerson) а не таким persons.add(newPerson,&persons) ?
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38096595
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то процедуры могут иметь методы, не только указатели на функции...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38096599
Фотография sergei123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в C++ могут, а в C ругается на синтакс.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38096614
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergei123Это в C++ могут, а в C ругается на синтакс.
Это правильный ответ.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38096641
Фотография sergei123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

Понятно, а по-другому никак?
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38096647
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergei123,

Язык С (в 99%) делает только то, что ему указал программист.
Если аргумент не передали, то компилятор его туда никак не подставит.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38102583
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergei123,

Использовать статический массив и напрямую обращаться к нему.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38102781
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь как можно вызывать функцию таким образом persons.add(newPerson) а не таким persons.add(newPerson,&persons) ?

никак, ты обязан при вызове передавать все параметры.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38102881
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, если ты тут пытаешься имитировать ооп на C, то ты делаеш это неправильно.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38103409
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разбить одну на две функции - разве не оно? Если функционал юзается однпоточно, то вроде вполне можно. Сначала делаете вашему инстансу setPersonaArrayToWork(Persons* value){personsArray=value;}, и потом вызываете persons.add(newPerson).
А второй параметр, например, вообще можно сделать по умолчанию. Если там null, то использует предустановленный ранее через setPersonaArrayToWork, а если там не-null, то используется он.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38103475
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokА разбить одну на две функции - разве не оно? Если функционал юзается однпоточно, то вроде вполне можно. Сначала делаете вашему инстансу setPersonaArrayToWork(Persons* value){personsArray=value;}, и потом вызываете persons.add(newPerson).
А второй параметр, например, вообще можно сделать по умолчанию. Если там null, то использует предустановленный ранее через setPersonaArrayToWork, а если там не-null, то используется он.
Лучше сразу застрелиться. Все равно потом коллеги забьют ногами.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38103958
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему коллеги забьют ногами? может это код преферанса, тогда гусары забьют канделябрами

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

...но даже если топикстартеру удастся это сделать, то он тут же захочет что нибудь из серии "jmx на плюсах", как в соседней ветке. А все от распространенного заблуждения, что телега под названием С может быть мерседесом.


не надо никаких void (*add)(...)
и тогда вместо persons.add(newPerson,&persons), пускай он пишет просто add(newPerson,&persons), и дважды написанное persons не будет ему мозолить глаза. А если ему не нравится такое add, то пускай он помещает его в неймспейс.
Ну я б ссылку на структуру поместил бы вначале add(&persons, newPerson) - мне кажется так было бы "ближе" к плюсам.
...
Рейтинг: 0 / 0
Как в C из структуры вызывать функцию не задавая аргумент структуры?
    #38104038
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

Ну, все правильно написали.

Указатели на функции в объекте нужны только если требуется полиморфное поведение.
Но поведение прямой связи с синтаксисом не имеет.
А тут видно что ТС хотел именно синтаксиса похожего на С++ - вот этому не бывать :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в C из структуры вызывать функцию не задавая аргумент структуры?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]