【发布时间】:2021-12-08 10:54:56
【问题描述】:
我创建了 2 个函数,用于读取和写入路径,声明如下:
int Read(const char * /*Filename*/, void * /*Ptr*/, size_t /*Size*/), Write(const char * /*Filename*/, const void * /*Ptr*/, size_t /*Size*/);
我创建了一个附加函数,它将使用路径调用上述函数之一
static int IOData(int(*const Func)(const char *, void *, size_t)) {
char Filename[DATA_PATH_LEN];
// Build path
return Func(Filename, &Data, sizeof(Data));
}
但是,当 Write 作为回调传递给 IOData 时,编译器会引发以下警告
不兼容的指针类型将'int (const char *, const void , int)'传递给'int ()(const char *, void *, int)'类型的参数
将接受 const 指针的函数强制转换为接受非 const 指针的函数是未定义的行为吗?
我注意到有一个almost identical question,但该问题使用 C++,但该问题使用纯 C,因此不能使用模板
【问题讨论】:
标签: c function pointers function-pointers undefined-behavior