计算结构大小而不填充字节的函数

2024-03-24

您好,我想创建一个函数来计算结构的大小而不填充字节。

例子 :

struct test{
    int   x;
    char  y;
    int   z;
};

如果我计算上述结构的大小,我必须得到 9 个字节(即没有填充字节)

并考虑我可能不知道结构中存在的变量的情况。

例子 :

struct test{
    int   x;
    ....
    ....
    ....
    int   z;
};

所以如果我计算尺寸它应该给出正确的尺寸。

是否可以编写这样的函数?我尝试阅读结构,但没有找到任何解决方案。我看到有一些编译器选项存在,我可以从中获得,但我不想要任何构建编译器选项。


不,C 没有足够的内省来使这成为可能。在运行时,程序没有任何信息可以用来“知道”结构中的哪些字段,或者它们的类型是什么。

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

计算结构大小而不填充字节的函数 的相关文章

  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • 当我尝试传递临时地址作为参数时,它是一个 UB 吗?

    对于以下 C 代码 include
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • ES2017 Figma 插件中的 Typescript 标记错误

    工具 Visual Studio代码 项目类型 node js 尝试 编译和构建https github com brianlovin figma export zip https github com brianlovin figma e
  • PhoneGap ios 固定虚拟键盘上的输入字段

    正在使用 jquery Mobile 创建一个phonegap 应用程序 在我的应用程序中 固定输入字段出现在虚拟键盘的顶部 这在 android 中工作正常 但在 IOS 中 当虚拟键盘出现时它不起作用 我的问题比这个小IOS 修复了虚拟
  • Vue JS:如何从 vue 组件访问和更改 CSS 根变量以切换 CSS 变量站点主题?

    我想在 Vue 组件中访问项目中 css 根变量的值 例如 通过按按钮更改 10 个变量 包括颜色 边距和字体大小 然后按同一按钮将变量更改为其 默认 原始值 实际上是更改值项目中的 css 根变量 我怎样才能做到这一点 事实上 我想通过按
  • pytorch通过易失性变量反向传播错误

    我试图通过多次向后传递迭代来运行它并在每个步骤更新输入 从而最小化相对于某个目标的一些输入 第一遍运行成功 但在第二遍时出现以下错误 RuntimeError element 0 of variables tuple is volatile
  • 当我的函数完成时,使用 JavaScript(或 jQuery)触发自定义事件

    我不想在 JS 中嵌套回调 而是想触发并监听我自己的自定义事件 我不需要也不想访问 DOM 这是一个例子 function doSomething trigger finished doSomething fire the event fi
  • 退出 SQLite 3 数据库

    我在 SUSE Linux 中有一个 SQLite 3 数据库 它卡在命令提示符处 如下所示 sqlite gt q gt exit gt exit gt quit gt quit 如何退出数据库 Type Enter to termina
  • AngularJS 使用 php 上传图像

    我在 AngularJS 中上传图像时遇到问题 我在这里发现了这个问题 Angularjs 使用 php 上传文件 https stackoverflow com questions 20487212 angularjs file uplo
  • Zend_Translate 的 MySQL 适配器

    我目前正处于一个相当大的项目的规划阶段 我将在 Zend 框架中开发该项目 我面临的问题之一是客户不仅想要翻译内容 还想要翻译界面 我目前正在使用 gettext 和 poedit 来管理我的语言文件 但这不是客户的选择 因为他们无法通过
  • 如何重命名 MongoDB 中的集合?

    有没有一种非常简单的方法来重命名 mongo 中的集合 就像是 db originalCollectionName rename newCollectionName 如果没有 有效重命名的最佳方法是什么 关闭 使用db originalCo
  • Swiftui 中 init() 中变量前的下划线是什么意思?

    momentDate 前面的下划线是什么意思 为什么需要它 带下划线的变量名称指的是底层存储Binding https developer apple com documentation swiftui binding结构 这是称为的语言功
  • 在 Eclipse 4 (RCP/SWT/OSGi) 应用程序中包含 log4j 的正确方法

    这是一个后续 不知何故我的OSGi 应用程序的第三方依赖项 https stackoverflow com questions 12569474 how to include a dependency to a jar file from
  • 如何使用 C++ cURL (libcurl) 管理简单的 PHP 会话

    我正在编写一个 C 客户端 它使用 libcurl 与 PHP 脚本进行通信 通信应该是基于会话的 因此第一个任务是登录并使 PHP 脚本建立会话 我不习惯使用 C 或 PHP 的会话 我基本上知道它与cookies和通信会话id有关 我在
  • 在 QT Creator 中无法访问局部变量和表达式中的变量

    如果我尝试在 QT Creator 中调试我的 C 程序 局部变量和表达式 窗口会向我显示程序中的变量 然而 所有值都显示 截屏 我如何获得要显示的值 我可以用 cout 打印出这些值 这样我就知道它们已经初始化了 编辑 它似乎只适用于字符
  • 汇编部分 .code 和 .text 的行为不同

    我是装配新手 从我所学到的 code与 text 但是使用下面的代码会崩溃 code segment data msg db hello world 0xa len equ msg section text global start sta
  • 无法看到我的 chrome://inspect/#devices 设备

    我按照谷歌的说明进行操作 https developer chrome com devtools docs remote debugging https developer chrome com devtools docs remote d
  • NASM 中 %define 和 equ 有什么区别?

    Code define x 0x03 x equ 0x03 他们之间有什么区别 define是一种更强大的执行宏的方法 类似于 C 预处理器 在您的简单情况下 没有太大区别 使用x源代码中将导致常量3被替换 这其中有一个细微的差别equ语句
  • JQuery 控制台日志到文件

    我正在尝试找到一个好的 jQuery 插件 它将控制台错误记录到文件中 以便我可以跟踪用户遇到的任何错误 有任何想法吗 您唯一的选择是放置一个函数 将信息 AJAX 发送到您的服务器 然后您将其写入本地服务器上的文件中 jQuery 本身不
  • 将 AsyncCallback 转换为可等待任务

    我正在尝试实现给定网址的下载 顺便说一下我的代码是 private string url private StorageFile outputFile public void download HttpWebRequest request
  • 在 iPad 上处于全屏模式时,如何捕获 MPMoviePlayer 下一个按钮单击事件?

    当 的时候MPMoviePlayerViewController在 iPad 上处于全屏模式时 它的控件默认在覆盖层上有一个上一个和下一个按钮 在我的项目中 我需要捕获该覆盖按钮的点击并进行相应的处理 由于我不确定如何调用播放列表 因此没有
  • 计算结构大小而不填充字节的函数

    您好 我想创建一个函数来计算结构的大小而不填充字节 例子 struct test int x char y int z 如果我计算上述结构的大小 我必须得到 9 个字节 即没有填充字节 并考虑我可能不知道结构中存在的变量的情况 例子 str