VCucumber 0 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба pls, сообразите за меня, как записать нечто такое: typedef struct { void (*on_event)(my_struct * a_struct); } my_struct; void event_handler(my_struct * a_struct); чтобы gcc не ругался Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба C без плюсов? struct my_struct_t; struct my_struct_t { void (*on_event)(struct my_struct_t * a_struct); }; typedef struct my_struct_t my_struct; void event_handler(my_struct * a_struct); Если меня не подводит память об особенностях чистого C. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба Как GCC ругается-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 27 октября, 2017 Опубликовано 27 октября, 2017 (изменено) · Жалоба typedef struct my_struct_t my_struct; ну да, это должно быть позволить не писать везде struct my_struct_t Изменено 27 октября, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба cat 1.c #include <stdio.h> typedef struct _my_struct{ void (*on_event)(struct _my_struct * a_struct); char *eventarg; } my_struct; void parcearg(my_struct *s){ printf("arg: %s\n", s->eventarg); } int main(int argc, char **argv){ my_struct s = {parcearg, NULL}; int i; for(i = 1; i < argc; ++i){ s.eventarg = argv[i]; s.on_event(&s); } return 0; } gcc 1.c -Wall -Werror -Wextra && ./a.out hello world arg: hello arg: world Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 27 октября, 2017 Опубликовано 27 октября, 2017 (изменено) · Жалоба в вашем варианте предупреждения о не соответствии типов должны быть, хотя работать будет, у меня сейчас так и работает зы: был не прав, собирается без предупреждений, на самом деле предупреждение было на void Изменено 27 октября, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба Специально же указал "-Wall -Werror -Wextra", чтобы было понятно, что никаких проблем нет! // я вообще абсолютно все свои поделки только с этими флагами и собираю на стадии разработки, иначе нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться