我包装了一个脚本库,这个宏存在。

#define asOFFSET(s,m) ((size_t)(&reinterpret_cast<s*>(100000)->m)-100000)


m是什么类型?它有一个例子:

struct MyStruct
{
  int a;
};

asOFFSET(MyStruct,a)


我想将其放入函数中。

最佳答案

脚本库使用宏(最有可能)来查找类成员的内部布局,而无需对其类,类型或继承模型进行假设。
(一个简单的示例是discussed here)。

对于大多数C ++程序,理想情况下完全不需要此信息(内存布局)。但是如果您确实需要它(例如,如果您正在编写分析器/调试器),则最好按原样保留此宏(或者最好将其在代码中的用法替换为Michael Anderson的offsetof指出。)有compiler-specific implementations这是


更高效
不太可能被报告为执行无效操作(例如,在使用Valgrind之类的工具时取消引用无效的内存地址)。


使用这些等效选项时,理想情况下,不需要手工编织或包装。

关于c++ - 我可以通过一个函数传递它吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24237709/

10-11 22:43
查看更多