从函数返回struct

ppr*_*ger 6 c struct function

可能重复:
返回包含数组的结构

我有一些简单的代码:

struct s {
    char str[128];
};

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

int main()
{
    printf("%s\n", foo().str);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是它会发出警告:

警告:格式'%s'需要'char*'类型的参数,但参数2的类型为'char [128]'[-Wformat]

如果我改变那样的主要功能

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

一切都好.那么,第一个代码中的问题是什么?谢谢.

PS.即时通讯使用gcc-4.7.0

PPS.请注意,问题只发生在C编译器上,C++一切正常