Я пытаюсь использовать силу указателей функций, все прошло нормально, пока я не попытался заставить указатель функции использовать второй аргумент как тип int.Функция указателя не работает для int
Приведенный ниже код создает ошибку, которая отображается ниже В файле заголовка:
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct UnitTag {
int x;
int y;
void (*move)(Unit, int);
} Unit;
Ошибка:
error: expected ‘)’ before ‘int’
void (*move)(Unit, int);
^
недействительными (* перемещение) (Единица измерения); работает отлично, что удивляет меня тем, как добавление аргумента может вызвать ошибку.
Я вызываю свою структуру в файле C, включив заголовок, а затем: Единицы измерения [UNITCOUNT]; единиц [0] .move (& единиц [0], 1);
Update:
добавление:
typedef struct UnitTag Unit
Вызывает ошибка исчезает, однако я больше не могу использовать функцию, как и раньше.
error: incompatible type for argument 1 of ‘units[i].move’
units[0].move(&units[0], 0);
^
Примечание: ожидаемый «Unit», но аргумент типа "STRUCT UnitTag *
Он должен быть недействительным (* move) (struct UnitTag, int); Я не знаю, как void (* move) (Unit); работает для вас. – MayurK
@MayurK, он дает такую же ошибку даже при использовании «void (* move) (UnitTag, int)»; – LamaCoder
@ LamaCoder Вы пропустили ключевое слово 'struct'. 'void (* move) (struct UnitTag, int);' – aschepler