【发布时间】:2016-12-01 14:31:43
【问题描述】:
我有一个函数指针,其函数被声明为期望 char * 参数。在其中,我想保存一个指向声明为采用 char const* 参数的函数的指针。
我想我可以使用包装器或演员表。 强制转换看起来更直接,但我可以合法地调用这种函数指针强制转换的结果吗?
示例代码如下:
static int write_a(char * X){
return 0;
}
static int write_b(char const* X){
return 0;
}
static int wrapped_write_b(char * X){
return write_b(X);
}
typedef int (*write_fn)(char * );
write_fn a = write_a;
write_fn b = wrapped_write_b;
write_fn b1 = (write_fn)write_b; //is b1 legally callable?
【问题讨论】:
-
根据this 它是UB(我认为)。但是,由于
const仅在构建时而不是运行时强制执行,我认为这不会成为问题。 -
@Danh:演员阵容完全合法。您提供的链接与此演员阵容完全无关。
标签: c pointers function-pointers