here is the code
struct point_tag {
int x;
int y;
};
typedef struct point_tag Point;
int main(void)
{
Point pt[] = { {10,20}, {30, 40}, {50,60}};
pt[0] = {100,200};
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时pt[0] = {100, 200},编译器一直在抱怨
错误:'{'标记之前的预期表达式
我不是真的那么做.不是{token assignment operator(=)之前的表达式吗?
我不明白为什么这项任务会成为一个问题.地址pt处的值指的是Point数组.我只是将第0个点设置为这个新点,我知道以类似的格式分配结构{100,200}是合法的,其中该数组中的元素只是字段.
对于赋值,请对类型进行类型转换以键入Point以使其成为复合文字:
pt[0] = (Point){100,200};
Run Code Online (Sandbox Code Playgroud)
使用gcc 实时代码
这相当于
{
Point temp = {100,200};
pt[0] = temp;
}
Run Code Online (Sandbox Code Playgroud)
ps复合文字在旧的严格C89兼容编译器中不可用.它可以在GCC中用于C89作为扩展,而在C99复合文字是核心功能.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |