让我们假设我有一个结构:
struct A {
uint16_t a;
uint64_t b;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法获得A w/o填充的大小?ie:所有成员的sizeof总和(即使它不是递归的).
通常sizeof(A) == 16.
我想__GCC_sizeof__(A) == 10.
我希望它在测试代码中不影响实际代码,这意味着在结构定义中没有"#pragma"s和no "__attribute__".(虽然它可以完成#ifdef TEST,但它非常难看).
它不必是便携式的,GCC足够了.
谢谢!
目的是能够从测试内部跟踪新添加的结构成员。
如果你先问这个问题会更好...
答案是肯定的,有办法,但不是通过#include文件;您应该使用能够获取 AST/ABT 结构并列出字段的工具,然后将其与预先注册的列表进行比较。例如,这对于 Clang 来说是可能的。
但现在,让我们更进一步。你为什么要测试它?很脆!
最好测试一下功能,隐藏的东西是有原因的。
如果每个功能都经过正确测试,那么只要测试通过,您是否知道字段列表并不重要。
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |