小编Hel*_*ate的帖子

对'X'的引用含糊不清

在对我的项目进行了几次更改后,我突然遇到了构建错误:

__CODE__

参考文献含糊不清 当看到错误时,它向我显示它被引用了4次

在此输入图像描述

有人可以告诉我这是怎么发生的,我怎么能弄清楚是什么导致了这个?我没有明确地从CoreGraphics导入任何东西,我的Prefix文件只导入'Foundation.h'和一些自制的宏.然而,我导入了几个包含纯c代码的头文件,但它们都封装在这样的东西中:

#ifndef __MYCCODE_H
#define __MYCCODE_H
// imports here
// c code here
#endif
Run Code Online (Sandbox Code Playgroud)

这在使用LLVM 5.1的xcode 5中发生

编辑:这似乎是这个项目的另一个问题.在评论这行代码后,我得到另一个错误:

#ifndef __MYCCODE_H
#define __MYCCODE_H
// imports here
// c code here
#endif
Run Code Online (Sandbox Code Playgroud)

删除模块并再次添加它没有帮助.删除派生数据也没有帮助.返回工作提交时也会出现此错误

objective-c ios xcode5

24
推荐指数
4
解决办法
2万
查看次数

结构变量别名

我正在尝试为结构内的变量创建一个别名,如下所示:

typedef struct {
    union {
        Vector2 position;
        float x, y;
    };
    union {
        Vector2 size;
        float width, height;
    };
} RectangleF;
Run Code Online (Sandbox Code Playgroud)

(请注意,我没有给工会命名所以我不必写:'variable.unionname.x'等)

但是当我创建这个结构的一些常量时,我​​得到一个"初始化器覆盖此子对象的先前初始化"警告:

static const RectangleF RectangleFZero = {
    .x = 0.0f,
    .y = 0.0f, // warning
    .width = 0.0f,
    .height = 0.0f // warning
}
Run Code Online (Sandbox Code Playgroud)

这样做有什么不对吗?如果没有,我怎么能摆脱这个警告?

编辑:我现在使用的解决方案:

typedef struct {
    union {
        Vector2 position;
        struct { float x, y; };
    };
    union {
        Vector2 size;
        struct { float width, height; };
    };
} RectangleF;
Run Code Online (Sandbox Code Playgroud)

c struct c99 compiler-warnings unions

3
推荐指数
1
解决办法
246
查看次数

为什么我的扩展方法重载不是首选?

我做了一个通用的重载来Enum.HasFlag防止拳击:

    public static unsafe bool HasFlag<T>(this T enumVal, T flag) where T : unmanaged, Enum {
        return sizeof(T) switch {
            1 => (*(byte*)&enumVal & *(byte*)&flag) == *(byte*)&flag,
            2 => (*(ushort*)&enumVal & *(ushort*)&flag) == *(ushort*)&flag,
            4 => (*(uint*)&enumVal & *(uint*)&flag) == *(uint*)&flag,
            8 => (*(ulong*)&enumVal & *(ulong*)&flag) == *(ulong*)&flag,
            _ => throw new ArgumentException("Unsupported base enum Type")
        };
    }
Run Code Online (Sandbox Code Playgroud)

然而编译器仍然想使用默认值Enum.HasFlag,我必须显式定义泛型类型以强制它使用扩展。

扩展方法在这里应该优先,因为与原始方法相比,参数具有正确的类型并且不需要隐式类型转换,那么为什么编译器仍然使用错误的类型呢?

.net c# .net-6.0

1
推荐指数
1
解决办法
127
查看次数

标签 统计

.net ×1

.net-6.0 ×1

c ×1

c# ×1

c99 ×1

compiler-warnings ×1

ios ×1

objective-c ×1

struct ×1

unions ×1

xcode5 ×1