如果我有以下功能:
bool MyFunc(char **outMessage)
{
}
这里有什么期望?调用者是否会分配缓冲区并传递给被调用方?但那么如果被调用者超过缓冲区呢?
要明确你没有大小或任何其他参数,这是函数定义。你怎么看?
或者我错了吗?它是被调用者分配的缓冲区吗?但如果它是被调用者分配的缓冲区,我该如何处理缓冲区呢?注意:没有功能可以处理库提供的功能。
编辑:这是一个真实的场景,取自此处 - > http://llvm.org/docs/doxygen/html/Analysis_2Analysis_8cpp_source.html#l00078
答案 0 :(得分:5)
我有一个功能(...) - 你从哪里拿走它?它在某种框架中吗?或者在项目中?
在这种情况下,您需要参考文档。
如果出于任何原因,没有文档,请尝试找到作者(如果他在您的公司/项目中)并询问。
如果出于任何原因,作者无法访问,请参阅源代码 - 查找此函数的用法。在哪里使用?其他人如何使用它?
作为最后的手段,做出一个假设。我猜你需要设置*outMessage
,即函数被调用为:
char * msg = NULL;
MyFunc(&msg); // You set it
printf("%s", msg);
无论如何,这对C ++来说是不好的。
答案 1 :(得分:0)
如果没有大小参数,那么我希望MyFunc
负责分配缓冲区。否则,它不会知道缓冲区有多大!
确保您的声明评论清楚地表明了这一事实。
但也请注意,这不是一种非常好的做事方式。它可能会在1852年在C中飞行,但我们已经开始了。为什么不通过引用或其他方式接受std::string
?