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 全局匿名结构/联合 的相关文章

随机推荐

  • 优化 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 变量重叠 使用匿名结构 希望避免指针运算来访问成员