1

Cそのため、文字列の配列 (つまり ) を返す、読みやすい関数プロトタイプを作成しようとしていますchar*。私が思いついた最も近いものは次のようなものです:

const char * const *entrypoints()
{
    static const char* arrays[] = {"test123", "test2"};
    return arrays;
}

ただし、宣言内の 2 つの s は好きではありません*。恐ろしく見えます :) ... しかし、関数が文字列の配列を返すという事実を強調する方法が見つかりませんでした ... で [] を使用する関数宣言は面白いコンパイルエラーにつながります(「エントリポイント」が配列を返す関数として宣言されている、const char* (entrypoints() [])または「[」トークンの前に非修飾IDが予想されるconst char[]* entrypoints()などconst char*[] entrypoints()...はい、コンパイラはどちらの場合も正しいです)、Googleのようですこれに対する答えがありません...だから私はここにいます。

C文字列の配列を返す、読みやすい方法で関数プロトタイプを宣言する方法はありますか(これはパブリックAPIで行われます)。C++ ではありません。C. _ 普通のC。そうでない場合は、2つ星のアプローチに固執する必要があります...つまり。char **. これは (あいまいに) 厄介なことではありませんが、関数が文字列の配列を返すことを強調したいと思います。Cは文字列が好きです:)

4

1 に答える 1

2

*宣言の 2 つの s が気に入らない

申し訳ありませんが、それが「ポインタの配列」の戻り値の型を宣言する方法です。配列はその最初の要素へのポインターに崩壊するため、この宣言が必要なことを達成できる唯一の方法です。

代わりにできることは、文字列の配列へのポインターを返すことです。

const char *(*fn())[2]
{
    static const char *arr[2] = {
        "foo",
        "bar"
    };
    return &arr;
}
于 2013-05-02T12:22:40.120 に答える