【发布时间】:2013-04-26 14:35:02
【问题描述】:
所以,我正在尝试创建一个可读性很好的C 函数原型,它返回一个字符串数组(即char*)。我能想到的最接近的是:
const char * const *entrypoints()
{
static const char* arrays[] = {"test123", "test2"};
return arrays;
}
但是,我不喜欢声明中的两个*s,它看起来很吓人:) ...但是我没有找到一种方法来强调该函数正在返回一个字符串数组这一事实。 . 在函数声明中使用 [] 会导致有趣的编译错误(例如,声明为函数的“入口点”返回 const char* (entrypoints() []) 的数组或在 const char[]* entrypoints() 或 const char*[] entrypoints() 的“[”标记之前的预期 unqualified-id .. . 是的,编译器在这两种情况下都是正确的),谷歌似乎对此没有答案......所以我在这里。
有没有办法以一种易于阅读的方式声明一个函数原型(这将在公共 API 中使用),它将返回一个 C 字符串数组。不是 C++。 C。普通的老C。如果没有,我将不得不坚持两星方法......即。 char **。并不是说这很尴尬,但我想强调该函数返回一个字符串数组。 C 喜欢字符串 :)
【问题讨论】:
-
C 中不能返回数组类型(“函数声明器不能指定返回类型是函数类型还是数组类型”),所以肯定是双星时间。
-
你希望调用者如何知道数组中有多少个字符串?你需要一个哨兵,或者一个伯爵。
-
@unwind 好问题!我想我得考虑一下了……哨兵感觉更友好:)
-
@unwind 你可以返回
pointer to array of N pointers to const char。
标签: c arrays string return prototype