所以,我正在尝试创建一个可读性很好的C
函数原型,它返回一个字符串数组(即char*
)。我能想出的最接近的是:
const char * const *entrypoints()
{
static const char* arrays[] = {"test123", "test2"};
return arrays;
}
然而,我不喜欢声明中的两个*
,它看起来很可怕:) ...但我没有找到一种方法来强调该函数返回一个字符串数组的事实...在函数声明中使用[]会导致有趣的编译错误(例如'entrypoints'声明为函数返回const char* (entrypoints() [])
的数组或const char[]* entrypoints()
的'['标记之前的预期unqualified-id或const char*[] entrypoints()
...是的,编译器在两种情况下都是正确的),谷歌似乎没有答案...所以我在这里。
有没有办法以一种易读的方式声明一个函数原型 (这将在一个公共API中),它将返回一个C字符串数组。不是C ++。 C 即可。平原老C.如果没有,我将不得不坚持两星的方法......即。 char **
。并不是说这是一个(模糊地)尴尬的东西,但我想强调该函数返回一个字符串数组。 C喜欢字符串:)
答案 0 :(得分:2)
我不喜欢声明中的两个
*
我为你感到难过,但这就是你如何声明一个返回类型的“指针数组”。数组衰变为指向其第一个元素的指针,因此这个声明是您完成所需内容的唯一方法。
你可以做的是返回一个指向数组字符串的指针:
const char *(*fn())[2]
{
static const char *arr[2] = {
"foo",
"bar"
};
return &arr;
}