【发布时间】:2014-02-19 13:53:28
【问题描述】:
使用 clang 编译时没有警告。
typedef struct {
int option;
int value;
} someType;
someType *init(someType *ptr) {
*ptr = (someType) {
.option = ptr->option | ANOTHEROPT,
.value = 1
};
return ptr;
}
int main()
{
someType *typePtr = init( &(someType) {
.option = SOMEOPT
});
// do something else with typePtr
}
这甚至是有效的 C 吗?
如果是这样:复合文字的生命周期是多少?
【问题讨论】:
-
如果您知道您使用的名称,您是否尝试过研究该功能。这两个出色的作品为我提供了 1 和 2:The New C: Compound Literals 和 6.25 Compound Literals,它们都回答了您的问题。
-
我已经阅读了那些(以及更多),但在任何地方都没有找到这个具体的例子。
标签: c struct compound-literals