6

重複の可能性:
配列を含む構造体を返す

私はいくつかの簡単なコードを持っています:

struct s {
    char str[128];
};

struct s foo()
{
    struct s s = { "some string" };
    return s;
}

int main()
{
    printf("%s\n", foo().str);
    return 0;
}

しかし、それは警告を実行します:

警告: フォーマット '%s' はタイプ 'char *' の引数を想定していますが、引数 2 のタイプは 'char[128]' です [-Wformat]

そのようにメイン関数を変更すると

int main()
{
    struct s s = foo();
    printf("%s\n", s.str);
    return 0;
}

全て大丈夫。では、最初のコードの問題は何でしょうか? ありがとう。

ps。gcc-4.7.0を使用しています

pps。注意してください、問題は C コンパイラでのみ発生し、C++ ではすべて問題ありません

4

0 に答える 0