gpt4 book ai didi

c - 这是一个 clang 错误吗? typedef 的匿名结构

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:21 28 4
gpt4 key购买 nike

我有这样一个结构的 typedef

typedef struct { double x, y; } ACVector;

当我在调试器中查看它的实例时,我得到非常奇怪的输出,例如

(lldb) p _translation
(ACVector) $1 = {
(double) x = -5503.61
(double) y = -5503.61
(CLLocationDegrees) latitude = -5503.61
(CLLocationDegrees) longitude = -1315.67
}

(lldb) p _translation.x
(double) $2 = -5503.61
(lldb) p _translation.y
(double) $2 = -5503.61

如果我将 ACVector 的定义更改为

typedef struct ACVector { double x, y; } ACVector;

在调试器中做同样的事情我得到了我期望的结果

(lldb) p _translation
(ACVector) $1 = {
(double) x = -5503.61
(double) y = -1315.67
}

对typedef使用匿名结构是合法的

好的,更多代码

_translation 的声明是一个实例变量

ACVector    _translation;

我用这个函数来初始化变量

ACVector ACVectorMake( double x, double y )
{
ACVector r;
r.x = x;
r.y = y;
return r;
}

像这样

_translation = ACVectorMake( d[xp[0]].x-s[xp[0]].x,  d[xp[0]].y-s[xp[0]].y );

本来是一个

ACVector ACVectorMake( double x, double y )
{
return (ACVector){x,y};
}

调试器输出中的纬度和经度元素从哪里来,请注意,您无法单独访问它们

响应其他地方定义的 ACVector 的更多信息

我有两个定义

#define ACVectorZero        (ACVector){(double)0.0,(double)0.0}
#define ACVectorUnit (ACVector){(double)1.0,(double)1.0}

有趣的是紧跟着

#define ACDegreesFromDegreesMinutesSeconds( d, m, s )                       (CLLocationDegrees)(d+m/60.0+s/3600.0)
#define ACLocationFromDegreesMinutesSeconds( yd, ym, ys, xd, xm, xs ) (CLLocationCoordinate2D){ACDegreesFromDegreesMinutesSeconds( xd, xm, xs ), ACDegreesFromDegreesMinutesSeconds( yd, ym, ys )}

这可以解释或解释 ACVector 中纬度和经度的出现

是否搜索了库中出现的每一个 ACVector,找不到任何其他定义的 ACVector 出现

这都是使用Xcode 4.5 Gold Master

最佳答案

我敢打赌,您可能会在变量声明中使用 struct ACVector _translation 而不是 ACVector _translation

请向我们展示更多代码。

关于c - 这是一个 clang 错误吗? typedef 的匿名结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494267/

28 4 0
文章推荐: c++ - 如何围绕 winApi 集成 C++ 类和对象?
文章推荐: c# - CheckBoxList 子级 CSS
文章推荐: html -
文章推荐: Python读取CSV转字符串
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com