gpt4 book ai didi

C - 结构有太多的初始化值

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:31 25 4
gpt4 key购买 nike

我有来自另一个站点的代码:

typedef struct {
byte x, y;
} Point;

typedef struct {
Point topLeft; /* top left point of rectangle */
Point botRight; /* bottom right point of rectangle */
} Rectangle;

byte rectanglesOverlap(Rectangle *Rectangle1, Rectangle *Rectangle2) {
// If one rectangle is on left side of other
if (Rectangle1->topLeft.x > Rectangle2->botRight.x || Rectangle2->topLeft.x > Rectangle1->botRight.x)
return 0;

// If one rectangle is above other
if (Rectangle1->topLeft.y < Rectangle2->botRight.y || Rectangle2->topLeft.y < Rectangle1->botRight.y)
return 0;

return 1;
}

我的印象是

Rectangle *thisR = {{x, y}, {x+width, y+height}},
*oldR = {{x2, y2}, {x2+width2, y2+height2}};

可以使用。它编译得很好,但重叠检查总是返回 false(意思是,即使它们重叠,它也会返回,就好像它们永远不会重叠一样)所以切换到 Visual Studio,我在第二点的大括号上得到了错误

{{x, y}, {
^

说我有“太多的初始化值”为什么这只是在 Visual Studio 而不是 GCC 中出现的错误,它能解释为什么重叠代码对我不起作用吗?这几天我一直在寻找这个问题的答案 D:

最佳答案

OP 试图用以下内容错误地初始化一个指针 @kaylum

Rectangle *thisR = {{x, y}, {x+width, y+height}},
*oldR = {{x2, y2}, {x2+width2, y2+height2}};

对于 C11,如果代码需要在等式或赋值中间创建一个Rectangle *,可以使用复合文字

Rectangle *thisR = &( (Rectangle) {{x, y}, {x+width, y+height}});

怀疑这是否适用于 Visual Studio

否则使用老方法。

Rectangle tmpR = {{x, y}, {x+width, y+height}};
Rectangle *thisR = &tmpR;

关于C - 结构有太多的初始化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35233964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com