C 全局匿名结构/联合

2023-11-29

我有一个 uint64 变量,通常只需要高位或低位 32 位访问。我正在使用 32 位 ARM Cortex M0,为了提高速度,我尝试将 uint64 变量与 C 中的两个 uint32 变量重叠,使用匿名结构,希望避免指针运算来访问成员。

我想做的事情可能吗?使用命名联合可能同样快,但现在我只是好奇是否可以不使用命名联合。以下情况未编译成功:

http://goo.gl/ejx37y

#include <stdint.h>

volatile union {
  uint64_t ab;
  struct { uint32_t a, b; };
};

int main(void)
{
  a = 1;
};

您定义一个没有实例的联合,这意味着不存在包含成员的联合对象。你可能可以这样做:

main.h:

typedef union {
  uint64_t ab;
  struct { uint32_t a, b; };
} u_t;

extern u_t u;

main.c:

u_t u = { .a = 1; };

如果你真的想(在 main.h 中):

#define a u.a
#define b u.b
#define ab u.ab

如果你使用#defines,小心它们影响any标识符(a、b、ab)的声明/使用,即使是在不同范围内的标识符。我建议您只需通过以下方式显式访问这些值u对象(如u.a, u.b, u.ab).

我已经删除了volatile从声明中,因为我非常怀疑你真的需要它。但如果您愿意,您当然可以将其添加回来。

(注意:问题最初将代码拆分为两个文件,main.h 和 main.c。我的答案相应地包含两个文件的代码。但是,这些可以轻松合并为一个)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 全局匿名结构/联合 的相关文章

  • 井字游戏代码有助于改进

    这是我必须检查玩家在井字棋游戏中获胜的代码 这是一个很长的 if 语句 可以改进 该板由 9 个图片框组成 我是一名 C 初学者 pBox Image Player players Player playerTurn getImage ch
  • C++,多语言/本地化支持

    向 C 程序添加多语言支持的最佳方法是什么 如果可能 应该从包含键值对 WelcomeMessage Hello s 之类的纯文本文件中读取语言 我想到了添加一个 localizedString key 函数来返回加载的语言文件的字符串 有
  • 委托和接口如何互换使用?

    我可以使用接口方法代替委托吗 如何 我发现搜索接口方法比使用委托更快 我希望有一个简单的代码片段 理论上 可以通过包含单个方法的接口 例如 Java 没有委托 来完成委托完成的所有工作 然而 它使代码变得更加冗长并且没有带来什么好处 话又说
  • lambda 表达式到函数指针的转换

    这是这个问题的后续问题 Lambda 如何作为参数传递 https stackoverflow com questions 3321283 c0x lambda how can i pass as a parameter 据推测 MSDN
  • 如何通过C#在SQLite数据库中写入变量DateTime值?

    我很新C and SQLite数据库并有一些变量存储在 SQLite 数据库中TimeStamp 这是我的代码 DateTime now DateTime Now m dbConnection new SQLiteConnection Da
  • File.ReadAllLines 或流读取器

    我们可以使用以下方式读取文件StreamReader http msdn microsoft com en us library vstudio system io streamreader或通过使用File ReadAllLines ht
  • 如何获取 C# PriorityQueue 元素的优先级

    我正在初始化一个存储 XY 坐标的优先级队列 根据距原点的欧几里得距离确定优先级 我创建了一个自定义Comparer这使得它作为最大堆运行 PriorityQueue
  • 公共领域有哪些替代方案?

    我正在用 java 编写一个游戏 正如问题标题建议的那样 我在类中使用公共字段 暂且 据我所知 公共领域很糟糕 我有一些理解其中的原因 但如果有人能澄清为什么你不应该使用它们 那将不胜感激 问题是 从我所看到的来看 这似乎是合乎逻辑的 是使
  • 模板“内联”函数的静态局部变量[重复]

    这个问题在这里已经有答案了 static的局部变量inline如果我的理解是正确的 C 中的函数保证像单个全局变量一样存在 如果inline函数是一个模板 编译器可以在哪里生成该函数的多个版本 下面这篇文章应该很好地回答你的问题 http
  • 加载配置文件时发生错误:访问路径 c:\Program Files (x86)\... 被拒绝

    我有一个在 Windows 7 上使用 Visual Studio 2010 中的安装程序部署的应用程序 该程序在 Windows 7 和 XP 上部署并运行良好 但当我在 Windows 8 系统上部署它时 出现有关访问配置文件的错误 该
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • C++20 views::join 在生成的嵌套范围::single_view 上进入无限循环

    我正在使用 GCC 实现 v10 2 和 v11 来处理 C 20 范围 测试的行为std views join https en cppreference com w cpp ranges join view 我尝试使用生成嵌套视图sin
  • 从 TFS 下载工作项附件(文件已损坏)

    我正在尝试创建 C 代码 因此我可以自动从 Team Foundation Server 下载 BUGS 预定义查询的所有附件 该代码似乎工作得很好 但所有下载的文件都因意外原因而损坏 我无法查看它们 有人可以看一下代码并分享意见吗 非常感
  • 仅最后一个用户控件显示内容控件

    我有一个奇怪的问题 我创建了一个带有标签和画布的用户控件 画布引用资源 但画布仅显示在我的堆栈面板中的最后一个控件上 这是我的窗户
  • 定义一个断言,即使定义了 NDEBUG,该断言也有效

    我想定义一个assert与标准相同的宏assert 3 http man7 org linux man pages man3 assert 3 html调用 但它不会被预处理器删除NDEBUG被定义为 这样的呼唤 让我们称之为assert2
  • 返回右值 - 这段代码有什么问题? [复制]

    这个问题在这里已经有答案了 我遇到了以下代码片段 std string test std string m Hello return std move m int main std string m test 我知道上面的代码是不正确且不安
  • 当前线程中的单例

    我的单身人士如下 public class CurrentSingleton private static CurrentSingleton uniqueInstance null private static object syncRoo
  • 使用 Powershell 或 C# 获取 Azure“文件和文件夹”作业状态

    我一直在尝试找到一种方法来获取在 AzureRM 中运行的几个客户上运行的 文件和文件夹 备份作业的状态 可以在 AzureRm 门户中手动找到状态 恢复服务保管库 gt 作业 gt 备份作业 使用powershell不显示任何作业信息 G
  • 如何使用 __m128i 执行元素左移?

    我发现 SSE 移位指令只能在所有元素上移位相同的量 mm sll epi32 mm slli epi32 这些会移动所有元素 但移动量相同 http software intel com sites products documentat

随机推荐

  • 优化 PostgreSQL 中的查询

    SELECT count FROM contacts lists JOIN plain contacts ON contacts lists contact id plain contacts contact id JOIN contact
  • Spring MVC 3.1 REST服务post方法返回415

    我正在做一个 Spring MVC 控制器 但 POST 操作仍然遇到问题 我在 stackoverflow 上阅读了许多解决方案 但没有解决我的问题 我目前的成就 我发送了带有 Id 的 GET 请求 并成功返回了转换为 JSON 的对象
  • 为什么 document.write() 之后的代码没有执行?

    我有以下 JavaScript
  • 通过 Android 应用程序连接到 OracleDB

    感谢您的浏览 希望您能帮助我 目前 我想通过我的 Android 应用程序从 OracleDB 服务器 在 LAN 上 获取一些数据 我将 JDBC 与 ojdbc14 jar 以及 Android 应用程序中的以下代码以及 logcat
  • CSS 向左下方浮动

    我有很多高度可变的 div 我需要这些 div 彼此排序 但是当它们到达窗口末尾时 gt 创建新的 列 现在 div 溢出了 但我需要创建新的 列 BTW 我有使用以下解决方案 webkit column gap 16px webkit c
  • 如何使用包编译和运行java类

    我在文件 MyClass java 文件中有一个名为 MyClass 的类 代码如下 package myclass class MyClass public int add int a int b return a b public st
  • 用选项卡主机滑动

    我有一个 TabHost 控件 不在操作栏中 并且我想让选项卡在用户滑动每个选项卡上的上下文 类似于 Whatsapp 表情符号选项卡 时进行更改 我怎样才能做到这一点 EDIT手感也很重要 我希望上下文应该有滚动动画 无论用户是否滑动或单
  • Facebook Graph Api url 评论和分享计数不再起作用

    我在我的博客中使用 facebook 评论插件 到目前为止 facebook graph api 帮助我检索我网站上每个帖子的评论计数 因此 正如我所说 我一个月前写的帖子 我可以使用 php 和 json decode 检索评论计数 如下
  • 在另一个 div 内水平和垂直居中 div

    我有一个关于将元素在另一个 div 内水平和垂直居中的问题 我正在为客户开发一个网站 这是给我带来麻烦的页面 http staging slackrmedia com halfpast brand collection bremont ht
  • 使用 store sencha touch 2 将数据加载到列表中

    我已经使用 Sencha touch 2 创建了导航视图 导航视图有列表组件 我想使用商店和模型加载它 我根据需要创建了模型并存储 运行我的应用程序时 列表不会呈现任何数据 它还在 conolse 中发出警告 Ext dataview Li
  • 更改可可中标题栏的颜色

    这个问题肯定有人问过 但谷歌搜索后我仍然找不到答案 如何将标题栏 可以使用关闭 最小化和最大化按钮单击并拖动的标题栏 的颜色更改为与 Cocoa 中默认灰色不同的颜色 如果您设置 纹理 窗口的背景颜色 这一区别在 Snow Leopard
  • For 循环:如何解释更改 ArrayList 大小?

    当 for 循环由 ArrayList 的大小控制时 i lt someArrayList size 但是循环的每次迭代都会向列表中添加一个元素 那么循环如何识别大小正在变化 我认为一旦代码被发送到编译器 它就会看到一次大小 然后执行直到达
  • Android 中两个视图可以同时获得焦点吗

    我有一个 EditText 和一个 popupWindown 其中有一个 ListView 现在我触摸 EditText 弹出窗口显示 我需要这种情况 我可以在 SoftInput 中输入一些内容 并且我还可以单击 ListView 中的子
  • 如何以两种不同的方式为后缀 a++ 和前缀 ++a 重载运算符 ++? [复制]

    这个问题在这里已经有答案了 如何以两种不同的方式为后缀重载运算符 a 和前缀 a 应该看起来像这样 class Number public Number operator prefix Do work on this increment y
  • Django Rest框架自定义Response中间件

    我将 Django Rest Framework 与 rest auth 一起使用 login logout register 我有一个中间件 通常由 user logged in 或 user logged out 信号触发 在我的中间件
  • Rails 中的 find_by_sql,访问结果数组

    我试图在 Rails 中以非常快速和肮脏的方式运行查询 而不将模型的其余部分放在适当的位置 我知道这是不好的做法 但我只需要在紧迫的时间内快速得到结果 直到我找到整个解决方案 我的商品有基于重量的运费 重量存储在商品中 价格存储在表ship
  • 运行可执行文件,然后等待该特定 exe 文件不再运行

    我想运行一个 AHK 可执行文件 然后让 java 等待该可执行文件在其脚本末尾终止它自己的进程 然后继续 是否有一个函数可以监视特定 exe 是否正在运行 如果它正在运行 直到它停止 例如在 AHK 你可以这样做 IfExist Appn
  • 如何使 元素展开或收缩到其父容器?

    目标是拥有
  • 模拟java开发的高CPU负载

    我正在开发一个 Java 应用程序 想看看它如何在较慢 超载的机器上运行 我怀疑可能存在一些线程不安全问题等被忽略 因为我的机器编译得足够快 有没有办法模拟 Java 应用程序的高 CPU 负载 限制可用 CPU 当然 我可以编写一个脚本来
  • C 全局匿名结构/联合

    我有一个 uint64 变量 通常只需要高位或低位 32 位访问 我正在使用 32 位 ARM Cortex M0 为了提高速度 我尝试将 uint64 变量与 C 中的两个 uint32 变量重叠 使用匿名结构 希望避免指针运算来访问成员