我需要传入一个函数作为参数。我已经看到很多网站都使用这种格式,并且他们说它可以在函数名称前使用或不使用&,无论哪种方式,都会给我一个错误。
(clojure.string/split nums11 #" ")
即使我传入func1指针,也会给我一个错误
错误/警告我得到: 警告:从不兼容的指针类型传递'set_iterate'的参数3
set_iterate原型: void set_iterate(set_t * set,void * arg, void(* itemfunc)(void * arg,const char * key,void * item));
答案 0 :(得分:1)
<xs:complexType> <xs:sequence> <xs:element name="Origin" type="xs:string" /> <xs:element name="Destination" type="xs:string" /> <xs:element name="FlightNo" type="xs:string" /> <xs:element name="FlightDate" type="xs:dateTime" /> <xs:element name="PassengersId" type="xs:long" /> <xs:element name="Gender" type="xs:string" /> <xs:element name="FirstName" type="xs:string" /> <xs:element name="LastName" type="xs:string" /> <xs:element name="ClassOfService" type="xs:string" /> <xs:element name="SSR" type="xs:string" /> <xs:element name="SSRCode" type="xs:string" /> <xs:element name="ChkInStatus" type="xs:string" /> <xs:element name="BoardingStatus" type="xs:string" /> <xs:element name="Passenger_Type" type="xs:string" /> <xs:element name="SeatNo" type="xs:string" /> <xs:element name="PassengerCountryCode" type="xs:string" /> <xs:element name="ClassOfService" type="xs:string" /> <xs:element name="FFP" nillable="true" type="xs:string" /> <xs:element name="PassengerCountryName" type="xs:string" /> </xs:sequence>
是非法的,因为 typedef 定义了一种类型,而不是变量
声明
typedef void (*func1)(void*, char*, void*) = iterate_test;
是错误的,因为该功能是
static void iterate_test(void *node);
替换为
static void iterate_test(void *node, char *key, void *item)
{
...
}
即使我传入func1指针,也会给我一个错误
上次更正后 static void iterate_test(void *node, char *key, void *item);
是正确的(没有void (*func1)(void*, char*, void*) = iterate_test;
)
错误/警告,我得到:警告:从不兼容的指针类型传递'set_iterate'的参数3
set_iterate原型:void set_iterate(set_t * set,void * arg,void(* itemfunc)(void * arg,const char * key,void * item));
typedef
期望的函数指针的第二个参数需要一个set_iterate
,但是const char *
的第二个参数需要一个iterate_test
,这就是为什么您收到该消息的原因
在char *
的配置文件中删除 const 或将set_iterate
的声明和定义修改为
iterate_test
当然,在第二种情况下,如果您仍然希望将指针保存在 func1 中,则需要
static void iterate_test(void *node, const char *key, void *item);
...
static void iterate_test(void *node, const char *key, void *item)
{
...
}