AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-16217248

user16217248's questions

Martin Hope
CPlus
Asked: 2025-03-07 09:44:45 +0800 CST

在 C 语言中,实数浮点类型可以作为复数浮点类型的别名吗?

  • 9

根据C 标准:

每个复数类型都具有与包含相应实数类型的两个元素的数组类型相同的表示和对齐要求;第一个元素等于复数的实部,第二个元素等于复数的虚部。

因此,是否可以安全地将 a 转换_Complex float *为 a float *,然后使用 访问实部/虚部float *?或者这在技术上是否仍违反严格别名,从而引发未定义的行为?

_Complex float c;

((float *)&c)[0] = 1;
((float *)&c)[1] = 2;

c; // 1 + 2i
c
  • 1 个回答
  • 48 Views
Martin Hope
CPlus
Asked: 2025-03-03 05:04:38 +0800 CST

如何使用元类型在 SwiftUI 中显示视图?

  • 5

我有一个 SwiftUI 视图,我希望能够显示许多其他不同视图之一:

struct View1: View {
    var body: some View {
        Text("View1")
    }
}

struct View2: View {
    var body: some View {
        Text("View2")
    }
}

struct View3: View {
    var body: some View {
        Text("View3")
    }
}

struct View4: View {
    var body: some View {
        Text("View4")
    }
}
struct ContentView: View {
    @State var showView1 = false
    @State var showView2 = false
    @State var showView3 = false
    @State var showView4 = false

    @ViewBuilder var body: some View {
        if (showView1) {
            View1()
        } else if (showView2) {
            View2()
        } else if (showView3) {
            View3()
        } else if (showView4) {
            View4()
        } else {
            VStack {
                Button ("Show View1") {
                    showView1 = true
                }
                Button ("Show View2") {
                    showView2 = true
                }
                Button ("Show View3") {
                    showView3 = true
                }
                Button ("Show View4") {
                    showView4 = true
                }
            }
        }
    }
}

但必须有某种方法来使用元类来避免长if else链。

所以我尝试了类似的事情:

struct ContentView: View {
    @State var showType: View.Type? = nil

    @ViewBuilder var body: some View {
        if let showType = showType {
            showType.init()
        } else {
            VStack {
                Button ("Show View1") {
                    showType = View1.type
                }
                Button ("Show View2") {
                    showType = View2.type
                }
                Button ("Show View3") {
                    showType = View3.type
                }
                Button ("Show View4") {
                    showType = View4.type
                }
            }
        }
    }
}

然而,这似乎不太正确,因为我收到此showType声明错误:

协议“View”只能用作通用约束,因为它具有自身或关联类型要求

我相信这是因为View它是一种协议而不是具体类型,但我不确定如何解决这个问题。在 Swift(UI) 中执行此操作的正确语法是什么?

swift
  • 3 个回答
  • 70 Views
Martin Hope
CPlus
Asked: 2024-09-03 05:09:15 +0800 CST

有没有办法确定 C 语言中指针的表示是否是“线性的”?

  • 7

据我所知,在 C 语言中,如果将指针转换为整数,则无法保证指针运算的行为反映整数运算的行为。换句话说,无法保证以下任何断言都成立:

char a[2]; // So that p + 1 is a valid memory location
char *p = a;
assert(p + 1 == (char *)((uintptr_t)p + 1));

int x;
int *p = &x;
assert((intptr_t)p % sizeof(int) == 0);

在大多数系统中,这些都会成立。指针的整数表示的尾部位将表示指针对齐,并且向指针添加某个偏移量与将偏移量乘以指针类型的大小添加到指针的整数表示中相同。

但是,有没有办法确定,最好是在编译时,在任何特定的实现中,这些假设是否对任何指针都始终成立,只要指针算法无论如何都会产生一个有效的指针,因为标准不保证它们?例如,在早期不支持的实现上失败,回退到替代实现等。

c
  • 2 个回答
  • 99 Views
Martin Hope
user16217248
Asked: 2023-11-21 02:33:18 +0800 CST

有没有办法在 C 中创建保留限定符的函数?

  • 8

我有一个函数,它接受指针但不修改指向的数据,但返回相同的指针或其派生。我可以做指针const:

const void *some_read_only_operation(const void *ptr) {
    // Do work with ptr
    return ptr;
}

但是,这意味着如果我调用该函数,即使我传递的指针不是 ,我也将无法在不进行强制转换的情况下操纵结果const。相反,如果我在函数中设置指针和返回类型为 non ,const那么我将需要进行强制转换以将任何指针传递给函数const。我会得到一个非const指针,所以我破坏了const安全性。

有没有什么方法可以在 C 中创建一个尊重const正确性的函数(constin 表示constout,non constin 表示 non constout),而不必编写 2 个单独的函数?如果没有,我能接近多远?

注意:这似乎是以前可能被问过的问题类型。我尝试使用const function return或限定符保留函数等关键字搜索重复项,但找不到任何重复项。

c
  • 2 个回答
  • 57 Views
Martin Hope
user16217248
Asked: 2023-09-07 02:26:24 +0800 CST

我可以在 C 中分配或返回具有未分配元素的结构吗?

  • 5

在 C 中,使用未初始化的变量是未定义的行为。包括:

int x;
int y = x;

但是,假设我有以下内容:

struct Struct {
    int a;
    int b;
};
struct Struct s;
s.a = 1;
struct Struct s0 = s;
return s; // Assuming an enclosing function with the correct return type

如果某些元素(但不是全部)已被分配,上述代码是否会调用未定义的行为?

c
  • 4 个回答
  • 76 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve