更具体地说,如果我有以下函数指针类型:
typedef void (*callback_type) (intptr_t context, void* buffer, size_t count);
我可以安全且没有“未定义的行为”吗:
callback_type func_ptr = (callback_type)write;
intptr_t context = fd;
func_ptr(context, some_buffer, buffer_size);
?
write()
系统调用在哪里(编辑:具有签名ssize_t write(int fd, const void *buf, size_t count);
,因此将 aint
作为第一个参数),并且fd
是int
文件描述符。我假设 C 和 C++ 的答案是相同的,所以我标记了两者。