宏定义确定大端还是小端机?

2024-04-17

是否有一行宏定义来确定机器的字节顺序?我正在使用以下代码,但将其转换为宏会太长:

unsigned char test_endian( void )
{
    int test_var = 1;
    unsigned char *test_endian = (unsigned char*)&test_var;

    return (test_endian[0] == 0);
}

支持任意字节顺序的代码,准备放入名为的文件中order32.h:

#ifndef ORDER32_H
#define ORDER32_H

#include <limits.h>
#include <stdint.h>

#if CHAR_BIT != 8
#error "unsupported char size"
#endif

enum
{
    O32_LITTLE_ENDIAN = 0x03020100ul,
    O32_BIG_ENDIAN = 0x00010203ul,
    O32_PDP_ENDIAN = 0x01000302ul,      /* DEC PDP-11 (aka ENDIAN_LITTLE_WORD) */
    O32_HONEYWELL_ENDIAN = 0x02030001ul /* Honeywell 316 (aka ENDIAN_BIG_WORD) */
};

static const union { unsigned char bytes[4]; uint32_t value; } o32_host_order =
    { { 0, 1, 2, 3 } };

#define O32_HOST_ORDER (o32_host_order.value)

#endif

您可以通过以下方式检查小端系统

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

宏定义确定大端还是小端机? 的相关文章

随机推荐

  • Google crashpad 上的一个交叉编译平台应用程序。 Ubuntu 中无法读取 dmp 文件

    我有一个小qt项目 https github com apalomer qt crashpad test我想跟踪一个分段错误 这是一个示例 分段错误是出于测试目的而手动添加的 在实际项目中我不知道留在那里的分段错误 我决定使用 google
  • 如何在 Windows Phone 7 的列表框中应用备用行样式

    您好 我是 Windows Phone 7 的新手 我在将样式应用于 Windows Phone 7 列表框中的交替行颜色时遇到问题 请帮助我 虽然 WPF 有一个ALternationCount支持这一点的属性 Silverlight 无
  • 如何使用 Jetpack Compose 显示在单击按钮时隐藏的 IconButton?

    我在我的ViewModel类 一个State对象的默认值为false var menuState mutableStateOf false 现在我想显示IconButton根据 的值menuState setContent Scaffold
  • 使用 numpy nan 查找列表的最大值[重复]

    这个问题在这里已经有答案了 import numpy as np print max np nan 1 2 3 4 print max 1 2 3 4 np nan print max 1 2 3 np nan 4 第一个将打印 nan 作
  • 物理地址、设备地址和虚拟地址的区别

    有什么区别设备地址 实际地址 and 虚拟地址 其实我正在努力mmap在驱动程序中 我一直坚持这个概念 The 文档 https www kernel org doc Documentation DMA API HOWTO txt says
  • 无法获取 org.hibernate.persister.entity.SingleTableEntityPersister 错误的构造函数

    我不是 hibernate 的频繁用户 我正在尝试创建多对一映射 但出现错误 主题 我一直在寻找类声明中的错误 还有 getter 最后一个错误 但一切似乎都是正确的 有人看到我的代码中有任何错误吗 因为我无法弄清楚 地址 java pac
  • 从环境中检索“一周的第一天”和“CalendarWeekRule”

    我认为这应该很容易 但我自己 还 找不到它 我需要知道是否可以从系统环境和 或本地设置中检索这两个值 我知道在我的国家 荷兰 这些价值观应该是 每周第一天 星期一 日历周规则 FirstFullWeek 但我不想为此设定固定的规则 您可以从
  • 使用 WinForms TreeView 递归目录列表?

    我想制作一个树视图 显示系统上的所有文件夹 并且仅显示音乐文件 例如 mp3 aiff wav 等 我记得读到我需要使用递归函数或类似的东西 通常大多数计算机都有数千个文件夹和数十万个文件 因此递归地在 TreeView 中显示所有这些文件
  • D3 V6 - 缩放和拖动功能

    在 Angular 7 中使用 D3 v6 创建世界地图 Choropleth 从 Angular 精简为纯 JavaScript 从 NaturalEarth 收集并在 mapshaper 中编译的形状文件以创建 GeoJSON 只对国家
  • jQuery-UI 主题 - CSS 大小差异

    当使用jQueryUI http www jqueryui com home网站上的示例 主题浏览器 http www jqueryui com themeroller 事情看起来很棒 但是 当我将代码和主题放入我的应用程序中时 大小调整完
  • Tornado with_timeout 正确用法

    我有一个运行一些 shell 命令的网络服务器 该命令通常需要几秒钟 但在某些情况下需要更多时间 在这种情况下客户端 不是网络浏览器或curl 会断开连接 我无法修复客户端 所以我考虑修复服务器 它基于龙卷风框架 我使用tornado ge
  • 十六进制常数 = 格式错误的数字?

    我有一个 Lua 脚本 我试图在其中使用十六进制数字 0x 如果我使用官方 Windows 二进制文件在控制台中运行此脚本 它可以正常工作 但是如果我在我的应用程序中运行它 简单的 dofile 我得到 malformed number n
  • Easy Tracker 中的 Google 分析自定义屏幕名称

    我有一个具有重用活动的应用程序 它用于不同的目的 因此仅跟踪活动名称对我没有帮助 这就是为什么我想在仍然使用 EasyTracker 的同时手动定义屏幕名称 我的代码如下所示 EasyTracker t EasyTracker getIns
  • Python:找到出现次数最多的单词?

    我试图让我的程序报告文本文件中出现最多的单词 例如 如果我输入 你好 我喜欢馅饼 因为它们非常好吃 程序应该打印出 最喜欢的馅饼 执行选项 3 时出现此错误 KeyError h Prompt the user to enter a blo
  • chrome 扩展,弹出窗口的高度

    在我看来 弹出窗口的高度有 489 像素的限制 如果我将弹出窗口的主体元素设置为 600 像素的高度 则弹出窗口将获得一个滚动条 因为内部页面变大 但弹出窗口不会更改其大小 是否可以使弹出窗口的高度大于 489 像素 Set height两
  • 在 iOS 12 中以编程方式从屏幕时间获取应用程序使用情况

    我正在开发一个项目 我想获得其他应用程序的使用时间 苹果发布了iOS 12并提供了新功能Screen Time 我想知道Apple是否提供任何方式或API来从中获取数据 不可以 在 iOS 上 每个应用程序都在自己的沙箱中运行 无法查看其他
  • 在 Angular 4 中使用权限的最佳方式是什么?

    在我的 Angular 4 项目中 我想使用从 API 获得的权限 权限保存为带有 ids 的数组 某些单个元素 例如用户或博客文章 具有允许权限的属性 这些属性允许或不允许编辑或删除等操作 作为带有 id 的数组 在 Angular 4
  • CruiseControl.Net + SSL

    因此 我刚刚在我的 PC 上安装了 Cruisecontrol NET 并且使用 VisualSVN 通过 https 和 虚拟 证书进行 SVN 托管 所有这些都在我的本地电脑上 问题是 当我尝试运行 Cruisecontrol NET
  • 如何在页面加载时将页面滚动到底部?

    要求 我想在页面加载时将内容滚动到页面底部 这是我的 html 代码
  • 宏定义确定大端还是小端机?

    是否有一行宏定义来确定机器的字节顺序 我正在使用以下代码 但将其转换为宏会太长 unsigned char test endian void int test var 1 unsigned char test endian unsigned