【发布时间】:2017-08-14 09:38:55
【问题描述】:
我需要编写一个 lib 包装器。我的包装函数原型是这样的
int my_wrapper(char * configstr);
要包装的函数如下所示。
void my_function(char config[CONFIGSTRSIZE]);
我尝试执行以下操作:
int my_wrapper(char * configstr)
{
my_function(configstr);
return 0;
}
这可以编译并且可以工作,但是我收到一个错误。告诉我参数是无效类型。
从指针目标类型中丢弃限定符
有没有办法执行强制转换以告诉编译器调用函数的指针始终是适当大小的指针?
更改接口或多或少是不可能的。我感谢您的反馈。
【问题讨论】:
-
void my_function(char config[CONFIGSTRSIZE])与void my_function(char *config)相同。 -
您不需要任何 包装器。很可能,您只是想传递
const char *?显示您的呼叫代码... -
请注意,
char ()[size]和char *不是同一类型。但是由于不可能传递一个数组,所以如果你在函数声明中写了数组类型,它会自动调整为相应的指针类型。因此,声明确实与@OliverCharlesworth 指出的相同 -
您发布了错误的代码。在实际代码中,某些函数使用了
const限定符。因此,您的问题在当前状态下无法回答。 -
@Schafwolle 好吧,这不会使您的程序定义。演员表基本上告诉编译器“闭嘴,我知道我在做什么”。