复合字面值表达式
复合文字 是一个后缀表达式,它提供了一个未命名的对象,其值由初始化方法列表提供。 C99 语言功能允许您将参数传递到函数,而不需要临时变量。 当只需要此类类型的一个实例时,它对于指定聚集类型 (数组,结构和并集) 的常量很有用。
为了与 C99 兼容, XL C/C++ 编译器支持此功能,作为 IBM 扩展。 
复合文字的语法类似于强制类型转换表达式的语法。 但是,复合文字是 lvalue ,而强制类型转换表达式的结果不是 lvalue。 此外,强制类型转换只能转换为标量类型或 void,而复合文字会生成指定类型的对象。
类型名可以是任何数据类型,包括
向量
和用户自定义类型。 它可以是未知大小的数组,但不能是可变长度的数组。 如果类型是未知大小的数组,那么大小由初始化方法列表确定。
以下示例将类型为
point 的常量结构变量 (包含两个整数成员) 传递到函数 drawline:drawline((struct point){6,7});如果复合文字出现在函数主体之外,那么初始化方法列表必须由常量表达式组成,并且未命名的对象具有静态存储持续时间。 如果复合文字出现在函数的主体中,那么初始化程序列表无需由常量表达式组成,并且未命名的对象具有自动存储持续时间。
为了与 GNU C 兼容,可以用相同类型的复合字面量初始化静态变量,前提是初始化器列表中的所有初始化器都是常量表达式。 
